go语言编程学习二

go语言编程初学二

 

枚举

 枚举之一系列相关的常量,比如一个星期中每天的定义

 

const (

       Sunday  =  iota

        Monday

       Tuesday

       Wednesday

       Thursday

       Friday

       Saturday

       numberofDays

)

同Go语言的其他符号一样,以大写字母开头的常量在包外可见,以上numberofDays为包内私有,其他的则可被其他包访问

 

类型

Go语言内置以下这些基础类型:

布尔类型:  bool

整型:   int8、byte、int16、int、uint、uintptr等

浮点型:float32、float64

复数类型: complex64、complex128

字符串:string

错误类型:error

此外,go语言也支持一下这些复合类型

指针   pointer

数组  array

切片   slice

字典   map

通道  chan

结构体  struct

接口   interface

 

布尔类型

var   v1   bool

v1  =  true

v2  :=  (1  ==  2)  //v2也会被推导为bool类型

布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换。实例

var   b  bool

b  =  1    //编译错误

b  =  bool(1)   //编译错误

以下的用法才是正确的:

var   b  bool

b  =  (1 !=  0)     //编译正确

fmt.Println("Result:",  b)   //打印结果为Result: ture

 

 

整型

 

类 型                          长度(字节)                                        值 范 围
int8                                     1                                                -128 ~ 127
uint8(即byte)                  1                                                   0 ~ 255
int16                                    2                                              - 32 768 ~ 32 767
uint16                                  2                                                  0 ~ 65 535
int32                                    4                                                -2 147 483 648 ~ 2 147 483 647
uint32                                  4                                                   0 ~ 4 294 967 295
int64                                    8                                                -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
uint64                                  8                                                    0 ~ 18 446 744 073 709 551 615
int                                   平台相关                                            平台相关
uint                                 平台相关                                              平台相关
uintptr                             同指针                                                 在32位平台下为4字节,64位平台下为8字节

需要注意的是int和int32 在go语言里被认为是两种不同的类型,编译器也不会帮你自动类型转换

var   value2  int32

value1  :=  64       //value1将会被自动推导为int类型

value2  =  value1   //编译错误

错误类似

cannot use value1 (type int) as type int32 in assignment。

使用强制类型转化可以解决这个编译错误

 

value2  =  int32(value1)   // 编译通过

 

 

数值运算

go语言支持常规整数运算:  +   -   *  /  %

%   和在C语言中一样是求余运算

5   %  2  //结果为2

 

比较运算

   >    <    ==   >=  <=   !=  

i,  j  :=  1,  2

if   i   == j  {

         fmt.Println("  i  and  j  are   equal.")

}

两个不同类型的整型不能直接比较,比如int8类型的数和int类型的数不能直接比较

不过各种类型的整型变量都可以直接与字面常量进行比较

var   i   int32、

var  j    int64

 

i,  j   =  1,   2

if   i   ==   j    {                    // 编译错误

         fmt.Println("  i  and  j  are  equal.  ")

if   i  ==  1  ||  j  ==  2  {        //编译通过

            fmt.Println("  i  and   j   are  equal.  ")

}

 

位运算

运 算                       含 义                              样 例
x << y                       左移                          124 << 2             // 结果为496
x >> y                       右移                          124 >> 2             // 结果为31
x ^ y                          异或                          124 ^ 2               // 结果为126
x & y                          与                            124 & 2                // 结果为0
x | y                           或                             124 | 2                 // 结果为126
^x                              取反                           ^2                       // 结果为.3

 

 

浮点型

浮点型用于表示包含小数点的数据,比如1.234就是一个浮点型数据

go语言定义了两个类型float32和float64, 其中float32等价于C语言的float类型

float64等价于C语言的double类型

var   fvalue1  float32

 

fvalue1  =  12

fvalue2   :=   12.0   //如果不加小数点,fvalue2会被推导为整型而不是浮点型

 

 

数组

数组是Go语言编程中最常用的数据结构之一,数组就是指一系列同一类型的集合

[32]byte                                      // 长度为32的数组,每个元素为一个字节
[2*N] struct { x, y int32 }             // 复杂类型数组
[1000]*float64                            // 指针数组
[3][5]int                                       // 二维数组
[2][2][2]float64                            // 等同于[2]([2]([2]float64))

 

posted @ 2017-07-10 16:37  With_the_wind  阅读(178)  评论(0编辑  收藏  举报