数据类型

布尔类型

布尔类型只有真值和假值。

类型 描述
bool true为真值,false为假值

注意:在Go中,整数0并不代表假值,非零整数也不能代表真值,即数字无法代替布尔值进行逻辑判断,两者是完全不同的类型。

整型

Go中为不同位数的整数分配了不同的类型,主要分为无符号整型与有符号整型。

  • “不同位数"指的是整数的位数,也就是在二进制表示中,这个整数所占用的位数。例如:一个8位整数就是在二进制表示中由8位(或8个比特)组成的整数,即占用一个字节。
  • 无符号整型仅能表示零及正整数,例如:一个8位无符号整型可以表示的范围是0到255,因为2^8-1等于255。
  • 有符号整型用来表示正数、负数和零,例如:一个8位有符号整型可以表示的范围是-128到127,其中最高位为符号位,0表示正数,1表示负数。
序号 类型和描述
uint8 无符号 8 位整型
uint16 无符号 16 位整型
uint32 无符号 32 位整型
uint64 无符号 64 位整型
int8 有符号 8 位整型
int16 有符号 16 位整型
int32 有符号 32 位整型
int64 有符号 64 位整型
uint 无符号整型 至少32位
int 整型 至少32位
uintptr 等价于无符号64位整型,但是专用于存放指针运算,用于存放死的指针地址。

复数类型

类型 描述
complex128 64位实数和虚数
complex64 32位实数和虚数

字符类型

go语言字符串完全兼容UTF-8

类型 描述
byte 等价 uint8 可以表达ANSCII字符
rune 等价 int32 可以表达Unicode字符
string 字符串即字节序列,可以转换为[]byte类型即字节切片

派生类型

类型 例子
数组 [5]int,长度为5的整型数组
切片 []float64,64位浮点数切片
映射表 map[string]int,键为字符串类型,值为整型的映射表
结构体 type Gopher struct{},Gopher结构体
指针 *int,一个整型指针。
函数 type f func(),一个没有参数,没有返回值的函数类型
接口 type Gopher interface{},Gopher接口
通道 chan int,整型通道

零值

官方文档中零值称为zero value,零值并不仅仅只是字面上的数字零,而是一个类型的空值或者说默认值更为准确。

类型 零值
数字类型 0
布尔类型 false
字符串类型 ""
数组 固定长度的对应类型的零值集合
结构体 内部字段都是零值的结构体
切片,映射表,函数,接口,通道,指针 nil

nil

源代码中的nil,可以看出nil仅仅只是一个变量。

var nil Type

Go中的nil并不等同于其他语言的nullnil仅仅只是一些类型的零值,并且不属于任何类型,所以nil == nil这样的语句是无法通过编译的。