map操作

102 阅读1分钟
package main

import "fmt"

func main() {
   map_init()

   map_base_action()
}

//map基本操作
func map_base_action() {
   //1.插入新键值对
   m := make(map[int]string)
   m[1] = "val1"
   m[2] = "val2"
   m[3] = "val3"
   //,如果我们插入新键值对的时候,某个 key 已经存在于 map 中了,那我们的插入操
   //作就会用新值覆盖旧值
   m[3] = "val4"
   fmt.Println(m)
   //2.获取键值数量
   m1 := map[string]int{
      "key1": 1,
      "key2": 2,
   }
   fmt.Println(len(m1))
   m1["key3"] = 3
   fmt.Println(len(m1))
   //3.查找和数据读取
   m2 := make(map[string]int)
   v := m2["key1"] //获取不存在的值为 默认零值 0
   fmt.Println(v)
   v1, ok := m2["key1"]
   if !ok {
      fmt.Println("key1不存在")
   } else {
      fmt.Println("key1:", v1)
   }
   //4.删除数据
   delete(m1, "key1")
   //5.遍历map的键值数据
   for k1, v1 := range m1 {
      fmt.Printf("[%s]:[%d]\n", k1, v1)
   }
}

//map初始化
func map_init() {
   //直接赋值会报错
   //var m map[string]int
   //m["key"] = 1  // panic: assignment to entry in nil map   error

   //1.使用复合字面值初始化 map 类型变量。
   m := map[string]int{}
   fmt.Println(m)

   m1 := map[int][]string{
      1: {"test1"},
      3: {"test2", "test3"},
   }
   fmt.Println(m1)

   //2.使用 make 为 map 类型变量进行显式初始化。
   m2 := make(map[int]string)    //未指定初始容量
   m3 := make(map[int]string, 8) //指定初始容量8
   fmt.Println(m2, m3)
}