map[keyType]valueType
nil
,此时无法添加键值对,需要先使用make()
来分配内存(使用方式见基础小记(9))len(map)
map
,如[]map[string]string
。此时要注意每个元素都需要用make()
初始化map
的值可以是切片,如map[string][]string
m1 := map[string]int{
"年龄": 25,
"身高": 130,
}
fmt.Println(m1["年龄"]) // 25
如果输出时选择的键不存在,则输出对应类型的零值。
向上例的m1
添加键值对:
m1["体重"] = 300
m1["身高"] = 150
fmt.Println(m1) // map[体重:300 年龄:25 身高:150]
可以看到,如果key
在原map中不存在,就添加新的键值对;如果已存在,就改变对应的value
。
语法格式:value, ok := map[key]
value
:如果键存在则返回对应值,否则返回对应类型的零值ok
:如果键存在则返回true
,否则返回false
接上例:
v1, k1 := m1["身高"]
v2, k2 := m1["爱好"]
fmt.Println(v1, k1, v2, k2) // 150 true 0 false
语法格式:for k, v := range map {}
其中k
和v
是键和值。示例请参考基础小记(4)代码中的第67行。
遍历过程是无序的,如果想要有序的遍历,可以将键保存在切片中,通过有序的遍历切片来遍历map。
语法格式:delete(map, key)
接上例:
fmt.Println(m1) // map[体重:300 年龄:25 身高:150]
delete(m1, "身高")
fmt.Println(m1) // map[体重:300 年龄:25]
delete(m1, "爱好")
fmt.Println(m1) // map[体重:300 年龄:25]
如果指定的键是nil
或者不存在,delete
不做任何操作,所以不会报错。
参考