由键值对组成的一种数据结构,通过key来对value进行操作 类型: map[keyType]valueType
map变量的声明和初始化
// 声明一个k为string类型,value为int类型的map
var m map[string]int // m = nil
m["a"] = 1 // panic: assignment to entry in nil map
map类型零值不能对其进行操作,会报错。所以必须对map类型变量进行显示初始化后才能使用
// 1. 先定义再初始化
var m map[string]int // m = nil
m = map[string]int{} // 空map
m["a"] = 100 // 添加元素
fmt.Println(m) // map[a:100]
// 2. 定义+初始化
m := map[string]int{} // 空map
m["a"] = 100 // 添加元素
fmt.Println(m) // map[a:100]
// 3. make创建
m := make(map[string]int) // 空map map[string]int{}
m["a"] = 100 // 添加元素
fmt.Println(m) // map[a:100]
查找元素
m := map[string]int{"a": 1, "b": 2, "c": 3}
fmt.Println(m["c"]) // 3
判断元素是否存在
m := map[string]int{"a": 1, "b": 2, "c": 3}
v, ok := m["a"]
if !ok {
// "a" 不存在map中
}
fmt.Println(v, ok) // 1 true
删除元素
m := map[string]int{"a": 1, "b": 2, "c": 3}
delete(m, "a")
fmt.Println(m) // map[b:2 c:3]
遍历map
m := map[string]int{"a": 1, "b": 2, "c": 3}
// for
for k := range m {
fmt.Println(k, m[k])
}
// for range
for k, v := range m {
fmt.Println(k, v)
}