由键值对组成的一种数据结构,通过key来对value进行操作 类型: map[keyType]valueType

map变量的声明和初始化

  1. // 声明一个k为string类型,value为int类型的map
  2. var m map[string]int // m = nil
  3. m["a"] = 1 // panic: assignment to entry in nil map

map类型零值不能对其进行操作,会报错。所以必须对map类型变量进行显示初始化后才能使用

  1. // 1. 先定义再初始化
  2. var m map[string]int // m = nil
  3. m = map[string]int{} // 空map
  4. m["a"] = 100 // 添加元素
  5. fmt.Println(m) // map[a:100]
  6. // 2. 定义+初始化
  7. m := map[string]int{} // 空map
  8. m["a"] = 100 // 添加元素
  9. fmt.Println(m) // map[a:100]
  10. // 3. make创建
  11. m := make(map[string]int) // 空map map[string]int{}
  12. m["a"] = 100 // 添加元素
  13. fmt.Println(m) // map[a:100]

查找元素

  1. m := map[string]int{"a": 1, "b": 2, "c": 3}
  2. fmt.Println(m["c"]) // 3

判断元素是否存在

  1. m := map[string]int{"a": 1, "b": 2, "c": 3}
  2. v, ok := m["a"]
  3. if !ok {
  4. // "a" 不存在map中
  5. }
  6. fmt.Println(v, ok) // 1 true

删除元素

  1. m := map[string]int{"a": 1, "b": 2, "c": 3}
  2. delete(m, "a")
  3. fmt.Println(m) // map[b:2 c:3]

遍历map

  1. m := map[string]int{"a": 1, "b": 2, "c": 3}
  2. // for
  3. for k := range m {
  4. fmt.Println(k, m[k])
  5. }
  6. // for range
  7. for k, v := range m {
  8. fmt.Println(k, v)
  9. }