map
在go语言中,map
是一个hash 表的引用。
map
的声明
ages := make(map[string]int) // mapping from strings to ints
ages := map[string]int{
"alice": 31,
"charlie": 34,
}
元素的访问
ages["alice"] = 32
fmt.Println(ages["alice"]) // "32"
删除元素
delete(ages, "alice") // remove element ages["alice"]
即使key
不存在,所有上面的这些操作都是安全的。在go语言中,查找一个不存在的key对应的值,返回值类型的0值。
所以下面的操作即使bob
不是ages
的key,仍然代码是没有问题的,因为程序在第一次访问map["bob"]
的时候返回0.
ages["bob"] = ages["bob"] + 1 // happy birthday!
在go语言中不能取map的地址,因为随着数据长度的增加,map的数据可能会转移,所以地址会改。
遍历map
for name, age := range ages