创建和初始化映射

Golang 中有很多种方法可以创建并初始化映射,可以使用内置的 make 函数,也可以使用映射字面量。

使用 make 函数声明映射

  1. // 创建一个映射,键的类型是 string,值的类型是 int
  2. myMap := make(map[string]int)

使用字面量声明映射

  1. // 创建一个映射,键和值的类型都是 string
  2. // 使用两个键值对初始化映射
  3. myMap := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}

创建映射时,更常用的方法是使用映射字面量。映射的初始长度会根据初始化时指定的键值对的数量来确定。

映射的键可以是任何值

这个值的类型可以是内置的类型,也可以是结构类型,只要这个值可以使用 == 运算符做比较。

切片、函数以及包含切片的结构类型,这些类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误:

  1. // 使用映射字面量声明空映射
  2. // 创建一个映射,使用字符串切片作为映射的键
  3. myMap := map[[]string]int{}

如果直接编译上面的代码,会得到一个编译时错误:

:::danger invalid map key type []string

:::

虽然切片不能作为映射的键,但是却可以作为映射的值,这个在使用一个映射键对应一组数据时,会非常有用:

  1. // 声明一个存储字符串切片的映射
  2. // 创建一个映射,使用字符串切片作为值
  3. myMap := map[int][]string{}