定义
map:一个无序的key-value对的集合,其中所有的key的值不同,通过给定的key对其进行检索、更新或删除可以在 O(1) 的时间复杂度内完成。
map[KeyType]ValueType
其中 KeyType表示键的类型 ValueType表示键对应值的类型
基本使用
初始化
make(map[KeyType]ValueType, [cap])
其中 cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。
ages := make(map[string]int)
map字面值的语法创建map,同时指定一些初始值
ages := map[string]int{
"alice": 31,
"tom": 34,
}
相当于
ages := make(map[string]int)
ages["alice"] = 31
ages["tom"] = 34
元素的访问 key中的value
ages["jack"] = 32
fmt.Println(ages["jack"]) // "32"
删除元素
格式:delete(map, key)
delete(ages, "alice") // remove element ages["alice"]
遍历
可以用for-range进行遍历
for name, age := range ages {
fmt.Printf("%s\t%d\n", name, age)
}
注意:遍历的顺序是随机的
这是故意的,每次都使用随机的遍历顺序可以强制要求程序不会依赖具体的哈希函数实现。----《Go语言圣经》
按指定顺序遍历
如果要按顺序遍历key/value对,我们必须显式地对key进行排序,可以使用sort包的Strings函数对字符串slice进行排序。
import "sort"
var names []string
for name := range ages {
names = append(names, name