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)
![](https://i-blog.csdnimg.cn/blog_migrate/ba01077fc7c6cffa8f0462b9c2e7f3b3.png)
- map 删除:
- 说明:
- delete(map,"key") ,delete 是一个内置函数,如果 key 存在,就删除该 key-value
- 如果 key 不存在,不操作,但是也不会报错
![](https://i-blog.csdnimg.cn/blog_migrate/3a8ade34ecdec9152b96ecf9c472ea77.png)
-- 演示删除
delete(cities, "no1")
fmt.Println(cities)
-- 当delete指定的key不存在时,删除不会操作,也不会报错
delete(cities, "no4")
fmt.Println(cities)
![](https://i-blog.csdnimg.cn/blog_migrate/eee934af016167b05f8f19f53439ec7f.png)
- 细节说明
- 如果我们要删除 map 的所有 key ,没有一个专门的方法一次删除,可以遍历一下 key, 逐个删除
- 或者 map = make(...),make 一个新的,让原来的成为垃圾,被 gc 回收
//如果希望一次性删除所有的key
//1. 遍历所有的key,如何逐一删除 [遍历]
//2. 直接make一个新的空间
cities = make(map[string]string)
fmt.Println(cities)
//演示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
![](https://i-blog.csdnimg.cn/blog_migrate/fba44f3636505bd694a49b68447714ad.png)
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)
}
![](https://i-blog.csdnimg.cn/blog_migrate/7173276ba02e28e45c07c95f7977a1d4.png)
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()
}
![](https://i-blog.csdnimg.cn/blog_migrate/1ece50332766562ad4af211e2e6b5648.png)
![](https://i-blog.csdnimg.cn/blog_migrate/01bc34260d04a1eea4b28718d2edfc4d.png)
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println("cities 有", len(cities), " 对 key-value")