基础数据类型
基础数据类型
| 类型 | 名称 | 长度 | 零值 | 说明 |
|---|---|---|---|---|
| bool | 布尔类型 | 1 | false | |
| byte | 字节型 | 1 | 0 | uint8别名 |
| rune | 字符类型 | 4 | 0 | 专用于存储unicode编码,等价于uint32 |
| int, uint | 整型 | 4或8 | 0 | 32位或64位 |
| int8, uint8 | 整型 | 1 | 0 | -128 ~ 127, 0 ~ 255 |
| int16, uint16 | 整型 | 2 | 0 | -32768 ~ 32767, 0 ~ 65535 |
| int32, uint32 | 整型 | 4 | 0 | -21亿 ~ 21 亿, 0 ~ 42 亿 |
| int64, uint64 | 整型 | 8 | 0 | |
| float32 | 浮点型 | 4 | 0.0 | 小数位精确到7位 |
| float64 | 浮点型 | 8 | 0.0 | 小数位精确到15位 |
| complex64 | 复数类型 | 8 | 只有两个复数的实部和虚部都相等时它们才相等 | |
| complex128 | 复数类型 | 16 | ||
| uintptr | 整型 | 4/8 | ⾜以存储指针的 uint32或 uint64整数 | |
| string | 字符串 | "" | utf-8字符串 |
bool 值不会隐式转换为数字值 0 或 1,也不允许将整型强制转换为布尔型
Byte&Rune
一个 byte 变量大小为1字节,用于表示 ACSCII 码字符,相当于 unit8 类型
rune 变量大小为4字节,用于表示采用 UTF-8 编码的 Unicode 字符,相当于 int32 类型
以 range 遍历 string 返回 rune 类型,以下标遍历返回 byte 类型
var ch byte = 65 // 10进制
// ASCII
var ch byte = '\x41' // 16进制
var ch byte = '\377' // 8进制
// UTF-8
var ch2 int = '\u03B2' // 4字节
var ch3 int = '\U00101234' // 8字节
指针
nil
nil 代表空指针
- nil 可以作为任意指针形参的实参传入
- nil 可以调用所有指针方法
- nil 标识符不能作为左值进行比较
- 不同类型的 nil 值占用的内存大小可能不同