已经对 Go 编程语言有了整体上的认识了,接下来应该深入学习 Go 语言的细节 -- 数据类型。
Go 语言数据类型主要以下几种大类:
布尔型的值可以说是两个常量,并且也只能是这两个值:true、false。
布尔型的标识符:bool
。
举一个例子:
// 定义一个变量 b,类型是 bool(布尔型),值为 true。
var b bool = true
整型和浮点型,Go 语言还支持复数。
数字类型主要是整数。
又有有符号和无符号的区别,这个符号是负数。这里内存占用和值范围的原理涉及二进制就不展开了。
类型 | 描述 | 内存占用 | 范围 |
---|---|---|---|
uint8 | 无符号 8 位整型 | 1 Byte(8 bit) | 0 - 255 |
uint16 | 无符号 16 位整型 | 2 Byte(16 bit) | 0 - 65535 |
uint32 | 无符号 32 位整型 | 4 Byte(32 bit) | 0 - 4294967295 |
uint64 | 无符号 64 位整型 | 8 Byte(64 bit) | 0 - 18446744073709551615 |
int8 | 有符号 8 位整型 | 1 Byte(8 bit) | -128 - 127 |
int16 | 有符号 16 位整型 | 2 Byte(16 bit) | -32768 - 32767 |
int32 | 有符号 32 位整型 | 4 Byte(32 bit) | -2147483648 - 2147483647 |
int64 | 有符号 64 位整型 | 8 Byte(64 bit) | -9223372036854775808 - 9223372036854775807 |
浮点主要是用来存储小数,并且浮点计算存在一定的精度问题。
Go 语言中浮点型使用的是 IEEE 二进制浮点数算术标准(IEEE 754)。
类型 | 描述 | 内存占用 |
---|---|---|
float32 | IEEE-754 标准单精度(32 位浮点数) | 4 Byte(32 bit) |
float64 | IEEE-754 标准双精度(64 位浮点数) | 8 Byte(64 bit) |
以 complex64 为例,它的实部和虚部都是 float32。
类型 | 描述 | 内存占用 |
---|---|---|
complex64 | 复数 32 位实数和虚数 | 4 Byte(32 bit) |
complex128 | 复数 64 位实数和虚数 | 8 Byte(64 bit) |
Go 语言中还有一些特殊的数字类型,用来记录一些其他东西,例如字符、指针。
类型 | 描述 |
---|---|
byte | 类似 uint8 或者说是其别名,存放占 1 字节的 ASCII 字符 |
rune | 类似 int32 或者说是其别名,存放多字节字符 |
uint | 是和运行的执行架构有关:32、64 位 |
int | 是和运行的执行架构有关:32、64 位 |
uintptr | 无符号整型,用于存放一个指针 |
字符串就是一串固定长度的字符连接起来的字符序列。
Go 的字符串是由单个字节连接起来的。
Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。