当前位置: 首页 > 网络应用技术

在Golang中使用地图的一些预防措施

时间:2023-03-06 23:37:36 网络应用技术

  XDM,我有点魔鬼Nezha。在日常开发工作中,据信地图的数据结构熟悉所有人。当然,Golang也有地图类型。

  关于地图的使用,仍然有许多预防措施。如果不清楚,这些问题可能会踩在坑中。让我们一起练习。

  写一个演示

  程序运行效果:

  将写作操作添加到代码:

  程序运行效果:

  确实,该程序已报告给恐慌。我们需要在实际工作中谨慎。

  程序运行效果:

  运行上述代码3次,结果3次不同。当然,3个结果的顺序可能相同

  因为GO中的地图是基于哈希表,所以遍历时是无序的

  如果我们需要清除此地图,那么我们可以直接将相应的地图变量设置为nil,例如

  地图也可以是两个维度,甚至是多维的,主要取决于我们的需求。

  但是我们应该注意,但它与定义时的两个维数阵列相似,但是特定用途仍然存在差异

  我们可以像这样操作两个维度阵列

  程序运行效果:

  我们无法像这样操作两个维度阵列

  程序运行效果:

  原因很简单。

  这是因为mymap [0]键为0,但是值是映射[字符串]字符串类型。您需要初始化它以编写一个操作。这也是我们在文章中提到的。

  如果您仍然想遵循上面的写作,它也很简单,只需在初始化中添加一个句子

  在我们的工作中,我们将存在所有需要获得地图的方法。目前,我们通常如何获得它?接触反射的XDM肯定会说,这很简单。例如:

  运行程序如下:

  但是我们都知道,戈兰的反射确实非常简单,但是效率确实很低。我们通常使用以下方法。

  已提前设置了这种编码方法,即mykey切片的容量与地图的长度一致,稍后将密钥添加到mykey时

  程序运行效果:

  我们可以看到,取出的钥匙不是订购

  最后,让我们模拟并验证Golang的地图不安全

  模拟不安全地图的演示需要开设更多公司来模拟效果。实验后,我在这里模拟了50,000家公司。

  运行程序更改将报告错误。将报告以下信息:

  如果要使用地图,则可以添加一个相互锁来解决解决方案

  我们仅修改上述代码,结构定义的位置以及设置值的功能

  为了检查便利性,我们将程序输出的值打印到文件中

  程序运行后,可以看出,真正的打印密钥相应的数据确实是5,000行,没有问题

  通过上面的示例,您可以理解Golang的地图。它确实不安全,需要锁定以实现并发安全golang。

  Sync.map的实施机制,简单地说,他有自己的锁,因此他可以控制并发安全

  好吧,这里是一种很好的语言,工具也是好工具。我们需要实际使用它来发挥其价值。如果您不使用它,一切都是盲人。