创建和初始化映射
Golang 中有很多种方法可以创建并初始化映射,可以使用内置的 make 函数,也可以使用映射字面量。
使用 make 函数声明映射
// 创建一个映射,键的类型是 string,值的类型是 int
myMap := make(map[string]int)
使用字面量声明映射
// 创建一个映射,键和值的类型都是 string
// 使用两个键值对初始化映射
myMap := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
创建映射时,更常用的方法是使用映射字面量。映射的初始长度会根据初始化时指定的键值对的数量来确定。
映射的键可以是任何值
这个值的类型可以是内置的类型,也可以是结构类型,只要这个值可以使用 == 运算符做比较。
切片、函数以及包含切片的结构类型,这些类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误:
// 使用映射字面量声明空映射
// 创建一个映射,使用字符串切片作为映射的键
myMap := map[[]string]int{}
如果直接编译上面的代码,会得到一个编译时错误:
:::danger invalid map key type []string
:::
虽然切片不能作为映射的键,但是却可以作为映射的值,这个在使用一个映射键对应一组数据时,会非常有用:
// 声明一个存储字符串切片的映射
// 创建一个映射,使用字符串切片作为值
myMap := map[int][]string{}