golang中有4种基础数据类型,分别是整型、浮点型、布尔型和字符串型。
整型
golang中整型分为有符号整型和无符号整型。其中按照数据占用空间大小的不同,有符号整型分为了5种,int
,int8
,int16
,int32
,int64
,对应的无符号整型uint
,uint8
,uint16
,uint32
,uint64
。每个类型后面的数字代表着该类型所占用的比特位,例如int8
表示占用8个比特位,即1字节。int和uint
是不固定长度的,它由操作系统的位数决定。例如在32位操作系统上,int
就是int32
,在64位操作系统上就是int64
。
类型 | 有符号 | 类型长度(字节) | 数据范围 |
---|---|---|---|
int8 | 是 | 1 | -128 ~ 127 |
int16 | 是 | 2 | -32768 ~ 32767 |
int32 | 是 | 4 | -2147483648 ~ 2147483647 |
int64 | 是 | 8 | -9223372036854775808 ~ 9223372036854775807 |
uint8 | 否 | 1 | 0 ~ 255 |
uint16 | 否 | 2 | 0 ~ 65535 |
uint32 | 否 | 4 | 0 ~ 4294967295 |
uint64 | 否 | 8 | 0 ~ 18446744073709551615 |
特殊的整型:
类型 | 32位操作系统对应类型 | 64位操作系统对应类型 |
---|---|---|
int | int32 | int64 |
uint | uint32 | uint64 |
浮点型
golang支持2种浮点型float32
和float64
,本别占用了4字节和8字节空间。float32
的浮点数的最大范围约为3.4e38
,可以使用常量定义:math.MaxFloat32
。 float64
的浮点数的最大范围约为 1.8e308
,可以使用一个常量定义:math.MaxFloat64
。
布尔型
golang中使用bool
来声明布尔型变量,布尔型只有两种值:true
和false
,默认值为false
。
字符串型
golang中使用string
来声明字符串。go中字符串是UTF-8
编码的序列,它由一个个的字符组成,底层是一个字符数组,当字符是ASCII码
时,占用1字节空间,其他字符则占用2~4字节。字符串是一种值类型,它的值是不可变的。
特殊类型
golang中有两种特殊的整型:byte
和rune
。其实它们并不是真正的类型,而是一种类型别名,byte
的本质是uint8
,rune
的本质是int32
。byte
代表着一个ASCII码
字符,rune
代表着一个UTF-8
字符。当你的字符串内容包含中文,且你做要遍历字符串或者切割字符串时,最好用rune
,会出现乱码等问题。