XDM,我有点魔鬼Nezha。在日常开发工作中,据信地图的数据结构熟悉所有人。当然,Golang也有地图类型。
关于地图的使用,仍然有许多预防措施。如果不清楚,这些问题可能会踩在坑中。让我们一起练习。
写一个演示
程序运行效果:
将写作操作添加到代码:
程序运行效果:
确实,该程序已报告给恐慌。我们需要在实际工作中谨慎。
程序运行效果:
运行上述代码3次,结果3次不同。当然,3个结果的顺序可能相同
因为GO中的地图是基于哈希表,所以遍历时是无序的
如果我们需要清除此地图,那么我们可以直接将相应的地图变量设置为nil,例如
地图也可以是两个维度,甚至是多维的,主要取决于我们的需求。
但是我们应该注意,但它与定义时的两个维数阵列相似,但是特定用途仍然存在差异
我们可以像这样操作两个维度阵列
程序运行效果:
我们无法像这样操作两个维度阵列
程序运行效果:
原因很简单。
这是因为mymap [0]键为0,但是值是映射[字符串]字符串类型。您需要初始化它以编写一个操作。这也是我们在文章中提到的。
如果您仍然想遵循上面的写作,它也很简单,只需在初始化中添加一个句子
在我们的工作中,我们将存在所有需要获得地图的方法。目前,我们通常如何获得它?接触反射的XDM肯定会说,这很简单。例如:
运行程序如下:
但是我们都知道,戈兰的反射确实非常简单,但是效率确实很低。我们通常使用以下方法。
已提前设置了这种编码方法,即mykey切片的容量与地图的长度一致,稍后将密钥添加到mykey时
程序运行效果:
我们可以看到,取出的钥匙不是订购
最后,让我们模拟并验证Golang的地图不安全
模拟不安全地图的演示需要开设更多公司来模拟效果。实验后,我在这里模拟了50,000家公司。
运行程序更改将报告错误。将报告以下信息:
如果要使用地图,则可以添加一个相互锁来解决解决方案
我们仅修改上述代码,结构定义的位置以及设置值的功能
为了检查便利性,我们将程序输出的值打印到文件中
程序运行后,可以看出,真正的打印密钥相应的数据确实是5,000行,没有问题
通过上面的示例,您可以理解Golang的地图。它确实不安全,需要锁定以实现并发安全golang。
Sync.map的实施机制,简单地说,他有自己的锁,因此他可以控制并发安全
好吧,这里是一种很好的语言,工具也是好工具。我们需要实际使用它来发挥其价值。如果您不使用它,一切都是盲人。