导航菜单

复合数据类型

课程导语

复合数据类型是 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 指针接收者
  • 类型断言与类型开关

章节

搜索