复合数据类型
课程导语
复合数据类型是 Go 语言处理批量数据和构建复杂结构的基石。理解切片和 map 的工作原理,是写出高效 Go 代码的关键。
大纲
3.1 数组
- 数组的定义与初始化
- 数组的长度是类型的一部分
- 多维数组
- 数组的遍历
- 数组的局限性(固定长度)
3.2 切片(Slice)
- 切片的本质:对底层数组的引用
- 创建切片:
make()、字面量、从数组切分 - 切片的长度
len()与容量cap() - 切片的扩容机制(
append的底层原理) - 切片的截取与操作
- 切片的内存布局(指针、长度、容量)
- 常见陷阱:切片作为函数参数、容量泄漏
3.3 映射(Map)
- Map 的定义与初始化(
make与字面量) - Map 的基本操作:增删改查
- 判断 key 是否存在:
value, ok := m[key] - Map 的遍历(
for range) - Map 的注意事项:无序性、非线程安全、引用类型
sync.Map(并发安全的 map)
3.4 结构体(Struct)
- 结构体的定义与初始化
- 匿名结构体
- 嵌套结构体与匿名嵌套(组合 vs 继承)
- 结构体的比较(可比较与不可比较)
- 结构体标签(Struct Tags):JSON、YAML、数据库映射
new()与结构体字面量初始化的区别
3.5 自定义类型
type定义新类型- 类型别名
type Alias = Original - 类型定义与类型别名的区别
- 方法定义:值接收者 vs 指针接收者
- 类型断言与类型开关
