数据类型
1 布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
2 数字类型
整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
整型
序号 | 类型 | 描述 |
---|---|---|
1 | uint8 | 无符号 8 位整型 (0 到 255) |
2 | uint16 | 无符号 16 位整型 (0 到 65535) |
3 | uint32 | 无符号 32 位整型 (0 到 4294967295) |
4 | uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
5 | int8 | 有符号 8 位整型 (-128 到 127) |
6 | int16 | 有符号 16 位整型 (-32768 到 32767) |
7 | int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
8 | int64 | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
浮点型
序号 | 类型 | 描述 |
---|---|---|
1 | float32 | IEEE-754 32位浮点型数 |
2 | float64 | IEEE-754 64位浮点型数 |
3 | complex64 | 32 位实数和虚数 |
4 | complex128 | 64 位实数和虚数 |
其他数字类型
序号 | 类型 | 描述 |
---|---|---|
1 | byte | 类似uint8 |
2 | rune | 类似int32 |
3 | uint | 32或64位 |
4 | int | 与uint一样大小 |
5 | uintptr | 无符号整型,用于存放一个指针 |
变量
1 变量声明方式有三种
(1)指定变量类型,声明后若不赋值,则使用默认值
var v_name v_type
v_name = value
(2)不指定变量类型,声明后赋值,go语言会自动判断数据类型
var v_name = value
(3)省略var关键字,声明的时候要赋值,使用:=声明和赋值。注意:=号左边的变量不能是已经声明过的变量
v_name := value
第三种变量声明方式只能用在函数体内,不能用于全局变量。使用:=操作符可以高效的创建一个新的变量。
(4)多变量声明,使用逗号隔开
var v_name1 , v_name2
var v_name1 , v_name2 = 1, 2
常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
常量的定义格式:
const identifier [type] = value
你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
const b string = "abc" //显式类型定义
const b = "abc" //隐式类型定义
多个相同类型的声明可以简写为:
const c_name1, c_name2 = value1, value2
常量还可以用作枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
数字 0、1 和 2 分别代表未知性别、女性和男性。
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。
iota
特殊常量,可以认为是一个可以被编译器修改的常量。
在每一个const关键字出现时,被重置为0。
然后再下一个const出现之前,每个常量都会将iota加1,,不管它是什么类型。
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
const (
j = iota //0.重新开始从0计数
k //1
)