Map
map
是 Go 语言中一种内置的数据类型,用来存储键值对。map
的键可以是任何支持 ==
和 !=
操作符的类型,而值可以是任何类型。map
通过键快速查找对应的值,因此非常适合用作字典或关联数组。
Map 可以进行的操作
- 添加键值对:通过
map[key] = value
语法添加或更新键值对。 - 访问元素:通过
map[key]
语法访问键对应的值。 - 删除键值对:使用
delete(map, key)
从map
中删除指定键值对。 - 检查键是否存在:通过双重赋值来检查键是否存在,如
value, ok := map[key]
。 - 获取
map
的长度:使用len()
获取map
中键值对的数量。 - 遍历
map
:使用for range
语句遍历map
的所有键值对。
示例代码
// 定义一个 map
m := make(map[string]int)
// 添加键值对
m["apple"] = 5
m["banana"] = 3
// 访问元素
appleCount := m["apple"] // 结果为 5
// 删除键值对
delete(m, "banana") // 删除键 "banana"
// 检查键是否存在
value, ok := m["banana"] // ok 为 false,表示键 "banana" 不存在
// 获取 map 的长度
length := len(m) // 结果为 1
// 遍历 map
for key, value := range m {
fmt.Printf("Key: %s, Value: %d\n", key, value)
}
特别注意
- 键不存在时的访问:如果访问
map
中不存在的键,返回的是该值类型的零值。例如,访问map[string]int
中不存在的键时会返回0
。 - 键的类型要求:
map
的键必须是可比较的类型,如整数、字符串等。slice
、map
和function
不能作为键。 - 随机遍历顺序:遍历
map
时,键的顺序是随机的。
总结
- Map 是一种键值对的集合,用于快速查找值。
- 可以通过
map[key]
访问或修改元素,通过delete()
删除键值对,并且通过len()
获取键值对的数量。 - 通过
range
可以方便地遍历map
中的所有键值对。