Golang中map用于存储无序键值对,支持高效查找、插入和删除。1. 声明方式包括var声明(初始为nil)、make创建(推荐)和字面量初始化;2. 可通过m[key]=value添加或更新元素;3. 直接访问返回零值,安全获取需用ok判断键存在;4. delete函数删除键值对;5. for-range遍历,顺序不定;6. 键类型须可比较,slice、map、func不可作键;7. map为引用类型,传递即共享;8. nil map不可写入,须先初始化。掌握这些即可熟练使用map。

在Golang中,map是一种内置的数据结构,用来存储无序的键值对(key-value pairs)。它类似于其他语言中的哈希表或字典。使用map可以高效地根据键快速查找、插入和删除对应的值。
声明和初始化map
你可以通过多种方式声明和初始化一个map:
-
使用 var 声明,初始值为 nil:
var m map[string]int
此时 m 为 nil,不能直接赋值,必须先初始化。 -
使用 make 函数创建 map:
m := make(map[string]int)
这是推荐的方式,创建了一个空的 map,可以立即使用。 -
使用字面量初始化:
m := map[string]int{"apple": 1, "banana": 2}
直接定义键值对,适合已知数据的情况。
操作map中的键值对
常见操作包括添加、访问、修改和删除元素:
-
添加或更新元素:
m["orange"] = 3
如果键不存在则添加,存在则更新。 -
获取值:
value := m["apple"]
如果键不存在,会返回值类型的零值(如 int 为 0)。 -
安全获取(判断键是否存在):
value, exists := m["grape"]
若键存在,exists 为 true;否则为 false,避免误用零值。 -
删除键值对:
delete(m, "banana")
使用 delete 函数按键删除条目。
遍历map
使用 for-range 可以遍历map的所有键值对:
立即学习“go语言免费学习笔记(深入)”;
for key, value := range m {fmt.Println(key, value)
}
注意:map是无序的,每次遍历的顺序可能不同。
注意事项
- map的键类型必须是可比较的,例如 string、int、float 等,但 slice、map 和 function 不能作为键。
- map是引用类型,传递给函数时不会拷贝整个结构,修改会影响原map。
- nil map 不能写入,必须用 make 初始化后再使用。
基本上就这些。掌握声明、增删改查和遍历,就能在日常开发中熟练使用map了。不复杂但容易忽略细节,比如判断键是否存在,这在实际编码中很关键。










