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

整型

类型备注
byte是uint8的别名
int对应平台机器字大小,有符号
int88位有符号整型
int1616位有符号整型
int3232位有符号整型
int6464位有符号整型
uint对应平台机器字大小,无符号
uint88位无符号整型
uint1616位无符号整型
uint3232位无符号整型
uint6464位无符号整型
uintptr足以容纳指针的整型

浮点型

类型备注
float3232位浮点数
float6464位浮点数,浮点数字面值推导为该类型

复数型

类型备注
complex6464位复数
complex128128位复数
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字符串,不可改变
runeUnicode码点,int32别名

接口类型

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

布尔型

类型备注
bool支持短路

关于别名

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

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,比如在有中文的情况下。

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