Go语言中的 映射(map)是一种内置的数据结构,是一个用于存储一系列无序的键值对的集合。bash
映射里基于键来存储值,键就像索引同样,指向与该键关联的值。数据结构
map_variable := make(map[key_data_type]value_data_type)
函数
// 建立一个映射,键的类型是string,值的类型是int
dict := make(map[string]int)
复制代码
// 建立一个映射,键和值的类型都是string
// 使用两个键值对初始化映射
dict := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
复制代码
键值对赋值给映射,是经过指定适当类型的键并给这个键赋一个值来完成的。spa
// 建立一个空映射,用来存储颜色以及颜色对应的十六进制代码
colors := map[string]string{}
// 将Red的代码加入到映射
colors["Red"] = "#da1337"
复制代码
// 经过声明映射建立一个 nil 映射
var colors map[string]string
// 将 Red 的代码加入到映射
colors["Red"] = "#da1337"
Runtime Error:
panic: runtime error: assignment to entry in nil map
复制代码
// 获取键 Blue 对应的值
value, exists := colors["Blue"]
// 这个键存在吗?
if exists {
fmt.Println(value)
}
复制代码
// 获取键 Blue 对应的值
value := colors["Blue"]
// 这个键存在吗?
if value != "" {
fmt.Println(value)
}
复制代码
// 建立一个映射,存储颜色以及颜色对应的十六进制
colors := map[string]string{
"AliceBlue": "#f0f8ff",
"Coral": "#ff7F50",
"DarkGray": "#a9a9a9",
"ForestGreen": "#228b22"
}
// 显示映射里的全部颜色
for key, value := range colors {
fmt.Printf("key: %s Value: %s\n", key, value)
}
复制代码
// 删除键为 Coral 的键值对
delete(colors, "Coral")
// 显示映射里的全部颜色
for key, value := range colors {
fmt.Printf("key: %s Value: %s\n", key, value)
}
复制代码
在函数间传递映射并不会制造出该映射的一个副本。实际上,当传递映射给一个函数,并对这个映射作了修改时,全部对这个映射对引用都会擦觉到这个修改。rest