go 之 map 类型
Map#
map 是 go 语言内置的数据结构,保存键值对的无序组合。
特征#
- 它的容量只受到机器内存的限制
- 里面的所有键都是唯一的而且必须支持 == 和!= 等操作符的类型
- 大部分 go 的数据类型都可用作 Map 的键,例如 int, string, float, rune, 指针类型,结构体都是可以的
Map 和切片是一样的, 都属于引用类型, 所以不管 Map 的多大, 它的传递始终是廉价的,Map 的查询非常快, 但是比切片和数组直接索引查询要慢大概两个数量级。
创建 Map#
make(map[keyType]valueType, capacity)
make(map[keyType]valueType)
map[keyType]valueType{}
map[keyType]valueType{key:value, .....}
第一种:可以预申请一定空间, 但是超过空间, Map 会自动扩容
第二种和第三种效果一样
第四种:可以初始化一些值
age := make(map[string]int, 5)
age["jack"] = 12
age["lily"] = 32
fmt.Println(age)
fmt.Println(len(age))
map[jack:12 lily:32]
2
映射查询#
if value, found := age["jack"]; found {
fmt.Println("jack's age is", value)
} else {
fmt.Println("key not found")
}
第一个参数是 Map 对应键的返回值, 第二个参数是返回布尔值, 如果 found 为 true 的话说明 map 有对应的键。
更新映射#
age["jack"] = 45 // 更新
fmt.Println(age)
age["tom"] = 78 //添加
fmt.Println(age)
delete(age, "lily") //删除
fmt.Println(age)
遍历#
for key, value := range age {
fmt.Println(key, "=>", value)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: