Go map的增删改查及遍历

    技术2022-07-11  95

    map的增删改查

    map 增加和更新map["key"] = value  如果 key 还没有,就是增加,如果 key 存在就是修改 cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "天津" cities["no3"] = "上海" fmt.Println(cities) -- 因为 no3这个key已经存在,因此下面的这句话就是修改 cities["no3"] = "杭州" fmt.Println(cities) 输出结果:


    map 删除:说明: delete(map,"key") ,delete 是一个内置函数,如果 key 存在,就删除该 key-value如果 key 不存在,不操作,但是也不会报错

    -- 演示删除 delete(cities, "no1") fmt.Println(cities) -- 当delete指定的key不存在时,删除不会操作,也不会报错 delete(cities, "no4") fmt.Println(cities)


    细节说明 如果我们要删除 map 的所有 key ,没有一个专门的方法一次删除,可以遍历一下 key, 逐个删除或者 map = make(...),make 一个新的,让原来的成为垃圾,被 gc 回收 //如果希望一次性删除所有的key //1. 遍历所有的key,如何逐一删除 [遍历] //2. 直接make一个新的空间 cities = make(map[string]string) fmt.Println(cities)
    map 查找: 案例演示: //演示map的查找 val, ok := cities["no1"] if ok { fmt.Printf("有no1 key 值为%v\n", val) } else { fmt.Printf("没有no1 key\n") } 如果 cities这个 map 中存在 "no2" , 那么 ok就会返回 true,否则返回 false


    map的遍历​​​​​​​

    说明:map 的遍历使用 for-range 的结构遍历案例演示1 //使用for-range遍历map cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "天津" cities["no3"] = "上海" for k, v := range cities { fmt.Printf("k=%v v=%v\n", k, v) } 输出结果;


    案例演示2 studentMap := make(map[string]map[string]string) studentMap["stu01"] = make(map[string]string, 3) studentMap["stu01"]["name"] = "tom" studentMap["stu01"]["sex"] = "男" studentMap["stu01"]["address"] = "北京长安街" studentMap["stu02"] = make(map[string]string, 3) //这句话不能少!! studentMap["stu02"]["name"] = "mary" studentMap["stu02"]["sex"] = "女" studentMap["stu02"]["address"] = "上海黄浦江" for k1, v1 := range studentMap { fmt.Println("k1=", k1) for k2, v2 := range v1 { fmt.Printf("\t k2=%v v2=%v\n", k2, v2) } fmt.Println() } 输出结果:


    map 的长度

    cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "天津" cities["no3"] = "上海" fmt.Println("cities 有", len(cities), " 对 key-value") 输出结果:

    ​​​​​​​

    Processed: 0.013, SQL: 9