Go 基本类型
Go 的数值、布尔、字符串和复数等基本类型,以及它们在静态类型系统中的角色。
#type / concept
#status / growing
#tech / dev
#resource / go
[!info] related notes
- 所属 MOC: Go 语言基础 MOC
- 前置概念: Go 程序结构
- 并列概念: Go 的变量、常量与零值, Go Slice, Go Map
- 易混淆概念: Go 中的值、指针与引用语义
Go 基本类型
一句话定义
Go 基本类型是语言内建的最基础数据表示方式,包括整数、浮点数、布尔、字符串和复数,它们构成更复杂数据结构的地基。
核心机制 / 工作原理
Go 的基础类型主要包括:
- 布尔:
bool - 字符串:
string - 有符号整数:
int、int8、int16、int32、int64 - 无符号整数:
uint、uint8、uint16、uint32、uint64、uintptr - 浮点数:
float32、float64 - 复数:
complex64、complex128 - 字符别名:
byte是uint8的别名rune是int32的别名,常用于表示 Unicode 码点
Go 的类型系统特点是:
- 静态类型明确
- 不鼓励隐式数值转换
- 字符串是只读字节序列的抽象
- 很多类型都有稳定零值
最小例子 / 最小场景
var age int = 18
var pi float64 = 3.14
var ok bool = true
var name string = "go"
var ch rune = '你'
从这个例子里最值得注意的是:
- 类型一般写在变量名后面
rune和string不是一回事- 不同整数类型之间通常需要显式转换
需要优先形成的直觉
int是最常用整数类型,但其位宽依赖架构byte更偏字节处理语境rune更偏字符码点语境string看起来像字符序列,但底层更接近只读字节片段
边界与易混淆点
rune不是“字符类型”的完整替代,它只是码点表示string的长度默认按字节计,不一定等于字符数- Go 不会像某些动态语言那样帮你自动完成数值类型转换
- 复杂容器如
slice、map不是基本类型,它们有单独的运行时行为