映射是一种数据结构,用于存储一系列无序的键值对。
注:
1.map内部使用Hash表
2.除了slice,map,function的内建类型都可以作为map的key
3.struct类型不包含上述字段,也可作为key
创建和初始化
使用make声明map
[go]m := make(map[string]int) //创建一个map,key的类型为string,value的类型为int[/go]
使用映射字面量声明
[go]m := map[string]string{
"name": "taylor", //:前为key,:后为value
"record": "red",
"old": "29",
"year": "1989",
}[/go]
声明空映射和nil映射
[go]m := make(map[string]int) //空映射
m := map[string]int{} //空映射
var m map[string]int //nil映射[/go]
使用映射
获取元素
[go]key := m["name"] //Go语言中即使map的键不存在也会返回一个值,这个值为对应类型的零值[/go]
为映射赋值
[go]m := map[string]int{} //创建一个空映射
m["NO"] = 99 //将键"NO"加入到map[/go]
从映射获取值并判断键是否存在
[go]
//Go语言中即使map的键不存在也会返回一个值,这个值为对应类型的零值
//
if name, ok := m["name"]; ok {
fmt.Println(name)
} else {
fmt.Println("key does not exist")
}[/go]
遍历map
[go]//map内部使用Hash表,不保证遍历顺序
//
for k, v := range m {
fmt.Println(k, v)
}[/go]
使用delete从map中删除一项
[go]delete(m, "name")[/go]
map在函数间的传递
map在函数间传递时并不会制造副本,是引用传递。