复合数据类型

复合数据类型是由基本数据类型组合而成的更复杂的数据结构。Go 语言提供了数组、切片、Map 和结构体四种主要的复合数据类型,它们是构建复杂程序的基础。

章节内容

9. 数组

数组是固定长度的同类型元素序列。本章讲解:

  • 数组的声明和初始化
  • 数组的访问和遍历
  • 多维数组
  • 数组作为函数参数
  • 数组的局限性

10. 切片

切片是 Go 语言中最常用的数据结构,是对数组的动态封装。本章涵盖:

  • 切片的创建和初始化
  • 切片的长度和容量
  • append 和 copy 操作
  • 切片表达式
  • 切片的底层原理

11. Map 映射

Map 是键值对的无序集合,是 Go 语言中的哈希表实现。本章介绍:

  • Map 的创建和初始化
  • Map 的增删改查
  • Map 的遍历
  • Map 作为函数参数
  • 并发安全的 Map

12. 结构体

结构体是 Go 语言实现面向对象编程的基础,用于组合不同类型的数据。本章讲解:

  • 结构体的定义和初始化
  • 结构体字面量
  • 结构体指针
  • 结构体比较
  • 匿名结构体

学习要点

数组

// 声明和初始化
var arr [5]int
arr2 := [5]int{1, 2, 3, 4, 5}
arr3 := [...]int{1, 2, 3}  // 自动推断长度

切片

// 创建切片
slice := []int{1, 2, 3}
slice2 := make([]int, 5, 10)

// 追加元素
slice = append(slice, 4, 5)

// 切片操作
subSlice := slice[1:3]

Map

// 创建 Map
m := make(map[string]int)
m["one"] = 1

// 读取和删除
value, ok := m["one"]
delete(m, "one")

结构体

// 定义结构体
type Person struct {
    Name string
    Age  int
}

// 创建实例
p := Person{Name: "张三", Age: 25}
p2 := &Person{"李四", 30}

学习建议

  1. 理解底层原理:切片和 Map 的底层实现是面试常考点
  2. 注意内存管理:切片扩容、Map 内存增长等需要理解
  3. 选择合适类型:根据场景选择数组、切片或 Map
  4. 结构体设计:学会合理设计结构体字段