Go中是不是Map是没有顺序一说的,为什么我在用for打印map里的元素的时候打印的顺序会发生变化呢
如图,mapList map[string]int 中{"one":1,"two":3,"ten":10};
在我遍历打印的时候,结果可能是 1-3-10,应该说一般都是1-3-10
但是一旦我加快对当前map的打印速度,比如连续的遍历两次,这时候打印出的结果就有可能发生变化了
第二次的结果就有可能是3-1-10或者10-1-3
想知道这是为什么,为什么我在频繁打印map的时候,顺序就变得奇怪了呢。
![image.png](https://static.studygolang.com/201111/6f6c41677c74fe23cb804f84b0f0368e.png)
![image.png](https://static.studygolang.com/201111/0da4523696c67ef1fe027aac77b9cea9.png)
map是一种hash表实现,因此map遍历顺序是不固定的
每次遍历的顺序都可能不一样。Golang会提前取一个随机数,把桶的遍历顺序随机化。
map还有一点就是非线程安全,因此在并发的情况下,不能使用map,而应该使用sync.map
#4
更多评论