Go内建容器之映射(map)

映射是一种数据结构,用于存储一系列无序的键值对。

注:

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在函数间传递时并不会制造副本,是引用传递。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注