map
概念说明
map(映射、字典)是 Go 的内置数据结构,用于存储无序的 key-value 键值对。
它适合做“通过键快速查值”的场景,例如用户信息、配置表、计数器等。
语法/规则
- 类型写法是
map[K]V,例如map[string]int。 key必须是可比较类型(例如string、int、bool、数组、结构体);value可以是任意类型。- map 在写入前必须初始化,可用
make或字面量。 - 读取不存在的键会返回
value类型零值。 - 使用
value, ok := m[key]可以区分“键不存在”与“值刚好是零值”。 delete(m, key)删除键值对;删除不存在的键不会报错。for range遍历 map 时顺序不固定。
初始化与增删改查示例
| |
输出结果:
| |
不存在键取值示例
| |
输出结果:
| |
常见错误
- 只声明不初始化就写入,例如
var m map[string]int; m["a"]=1,会触发assignment to entry in nil map。 - 读取 map 只接收一个返回值时,无法区分“键不存在”和“键存在但值为零值”。
- 误以为 map 遍历顺序固定,导致业务逻辑依赖顺序而出错。
- 把不可比较类型(如切片
[]int)当作 key,会编译失败。