数据类型
大约 5 分钟
数据类型
下面列出Go语言中全部的内置类型,以供参考,更多细节可以前往参考手册-类型。
布尔类型
布尔类型只有真值和假值。
| 类型 | 描述 |
|---|---|
| bool | true为真值,false为假值 |
提示
在Go中,整数0并不代表假值,非零整数也不能代表真值,即数字无法代替布尔值进行逻辑判断,两者是完全不同的类型。
整型
Go中为不同位数的整数分配了不同的类型,主要分为无符号整型与有符号整型。
| 序号 | 类型和描述 |
|---|---|
| uint8 | 无符号 8 位整型 |
| uint16 | 无符号 16 位整型 |
| uint32 | 无符号 32 位整型 |
| uint64 | 无符号 64 位整型 |
| int8 | 有符号 8 位整型 |
| int16 | 有符号 16 位整型 |
| int32 | 有符号 32 位整型 |
| int64 | 有符号 64 位整型 |
| uint | 无符号整型 至少32位 |
| int | 整型 至少32位 |
| uintptr | 是一个足够大的整数类型,足以容纳任何位数的整数指针(特殊用途)。 |
浮点型
IEEE-754浮点数,主要分为单精度浮点数与双精度浮点数。
| 类型 | 类型和描述 |
|---|---|
| float32 | IEEE-754 32位浮点型数 |
| float64 | IEEE-754 64位浮点型数 |
复数类型
| 类型 | 描述 |
|---|---|
| complex128 | 64位实数和虚数 |
| complex64 | 32位实数和虚数 |
字符类型
Go对于Unicode编码百分百兼容和支持。
| 类型 | 描述 |
|---|---|
| byte | 等价 uint8 可以表达ANSCII字符 |
| rune | 等价 int32 可以表达Unicode字符 |
| string | 字符串即字节序列,可以转换为[]byte类型即字节切片 |
派生类型
| 类型 | 例子 |
|---|---|
| 数组 | [5]int,长度为5的整型数组 |
| 切片 | []float64,64位浮点数切片 |
| 映射表 | map[string]int,键为字符串类型,值为整型的映射表 |
| 结构体 | type Gopher struct{},Gopher结构体 |
| 指针 | *int,整型指针 |
| 函数 | func(),一个没有参数,没有返回值的函数类型 |
| 接口 | type Gopher interface{},Gopher接口 |
| 通道 | chan int,整型通道 |
零值
官方文档中零值称为zero value,零值并不仅仅只是字面上的数字零,而是一个类型的空值或者说默认值更为准确。
| 类型 | 零值 |
|---|---|
| 数字类型 | 0 |
| 布尔类型 | false |
| 字符串类型 | "" |
| 数组 | 固定长度的对应类型的零值集合 |
| 结构体 | 内部字段都是零值的结构体 |
| 切片,映射表,函数,接口,通道,指针 | nil |
nil
源代码中的nil,可以看出nil仅仅只是一个变量。
var nil Type
Go中的nil并不等同于其他语言的null,nil仅仅只是一些类型的零值,并且不属于任何类型,所以nil == nil这样的语句是无法通过编译的。
