Go map的增删改查及遍历

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")
  • 输出结果:

​​​​​​​

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值