Golang内置类型大致分为整型、浮点型、复数型、字符(串)型、接口类型、布尔型几类。

整型

类型 备注
byte 是uint8的别名
int 对应平台机器字大小,有符号
int8 8位有符号整型
int16 16位有符号整型
int32 32位有符号整型
int64 64位有符号整型
uint 对应平台机器字大小,无符号
uint8 8位无符号整型
uint16 16位无符号整型
uint32 32位无符号整型
uint64 64位无符号整型
uintptr 足以容纳指针的整型

浮点型

类型 备注
float32 32位浮点数
float64 64位浮点数,浮点数字面值推导为该类型

复数型

类型 备注
complex64 64位复数
complex128 128位复数
1
2
3
4
var complex_num complex128 = complex(1, 2)
fmt.Println(complex_num)       //(1+2i)
fmt.Println(real(complex_num)) //1
fmt.Println(imag(complex_num)) //2

字符和字符串型

类型 备注
string 字符串,不可改变
rune Unicode码点,int32别名

接口类型

类型 备注
error 包含一个返回string的方法Error

布尔型

类型 备注
bool 支持短路

关于别名

两个名称可以混用,本质上就是同一个类型。

1
2
3
4
var b byte = 0
fmt.Printf("%T\n", b) //uint8
var r rune = 0
fmt.Printf("%T\n", r) //int32

关于rune和byte

byte是物理意义上的概念,着重表示内存大小,rune是人类理解上的概念,表示一个有意义的字符。一个rune并不总是等于一个byte,比如在有中文的情况下。

1
2
3
var s string = "Hello,世界!"
fmt.Println(len(s))                    //15 byte长度
fmt.Println(utf8.RuneCountInString(s)) //9  rune长度