让我们继续向前,今天我们来看一下Go语言的map。
一、map的声明
在Golang中map的声明有几种方式。
上面的例子大家可以看出来map获取元素值的方式是m[k]。那么map访问不存在的key会如何?
通过图2我们可以看到,
1.在获取不在的key时,我们得到的值是该类型下的零值。
2.在获取map的value时,可以得到两个值。那么第二个值就是让我们来判断访问的key是否存在。
那么现在我们需要删除map中的key怎么办呢?
通过图3我们可以看到:
1.删除方法直接使用delete方法
2.delete在删除不存在的key时并不会引发异常
在开发中我们经常可能需要遍历map对象,那我们怎么去实现呢?
在Go语言中for集所有功力与一身,因此map的遍历同样使用了他。
以上map的基本操作我们都已经学习完了,下面我们看看一下扩展点:
1.因为Golang的并发支持好,但是这给我们在使用map的时候也提供了阻力,现在我们来看一段代码,是否会有异常抛出呢?
点击一次正常打印出20组,第二次正常,但是第三次我得到了一个异常“fatal error: concurrent map writes”,因此我们在并发的情况下操作map的时候一定要注意。第一种是自己加锁,第二种方法是使用golang提供的sync.Map
2.在Golang中函数也是一种类型,因此我们可以使用map来构建一个工厂模式
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。如果你不喜欢欢迎提出宝贵的意见,我会继续改进和大家分享我的学习之路
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除