map是无序的,key-value键值对的集合。通过 key 来快速检索数据,key 类似于索引,指向数据的值map是引用类型。如果将一个map传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对map的修改会影响到所有引用它的变量
一、定义
1. 使用内建函数make
map名 := make(map[key类型]value类型 可选参数),可选参数一般用于指定map的初始容量
// 创建一个空的 Map
m := make(map[string]int)
// 创建一个初始容量为 10 的 Map
m := make(map[string]int, 10)
2. 使用map关键字
// 使用字面量创建 Map
m := map[string]int{
"key1": 1,
"key2": 2,
"key3": 3,
}
二、操作
前提:必须对map进行初始化。因为它是引用类型,默认为nil,找不到地址就没有内存空间进行存值或删除操作,会直接触发运行时 panic
1. 取值
- 键值对
// 获取键值对
v1 := m["key1"]
v2, ok := m["gogogo"] // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值
for range遍历
// 遍历 Map
for k, v := range m {
fmt.Printf("key=%s, value=%d\n", k, v)
}
2. 删除
可以使用go内置的delete函数,delete 函数只能逐个删除单个键值对
// 删除键值对
delete(m, "key2")