golang 遍历map_Go语言利器篇-map

2769063b34a343d164787f3b084548d5.png

让我们继续向前,今天我们来看一下Go语言的map。

一、map的声明

在Golang中map的声明有几种方式。

a569a9f2fcffa1660e6bf8a32b6e881d.png

上面的例子大家可以看出来map获取元素值的方式是m[k]。那么map访问不存在的key会如何?

a0ec8cbd3628bbd076258e04f85823ba.png

通过图2我们可以看到,

1.在获取不在的key时,我们得到的值是该类型下的零值。

2.在获取map的value时,可以得到两个值。那么第二个值就是让我们来判断访问的key是否存在。

那么现在我们需要删除map中的key怎么办呢?

2e1545cd954548e07168bac6e2f9b63d.png

通过图3我们可以看到:

1.删除方法直接使用delete方法

2.delete在删除不存在的key时并不会引发异常

在开发中我们经常可能需要遍历map对象,那我们怎么去实现呢?

133249269e4a08fa04e10acafbdc4631.png

在Go语言中for集所有功力与一身,因此map的遍历同样使用了他。

以上map的基本操作我们都已经学习完了,下面我们看看一下扩展点:

1.因为Golang的并发支持好,但是这给我们在使用map的时候也提供了阻力,现在我们来看一段代码,是否会有异常抛出呢?

7f6a6765c16822fe52f9e5a957bce901.png

点击一次正常打印出20组,第二次正常,但是第三次我得到了一个异常“fatal error: concurrent map writes”,因此我们在并发的情况下操作map的时候一定要注意。第一种是自己加锁,第二种方法是使用golang提供的sync.Map

2.在Golang中函数也是一种类型,因此我们可以使用map来构建一个工厂模式

589d87ef6cfed02ee54b985b4fc4db8d.png

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。如果你不喜欢欢迎提出宝贵的意见,我会继续改进和大家分享我的学习之路

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值