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的时候,顺序就变得奇怪了呢。
有疑问加站长微信联系(非本文作者)

遍历的起始节点是随机的,所以几次输出不一致
Map是一种无序的键值对的集合
开发者故意让map遍历无序的
map是一种hash表实现,因此map遍历顺序是不固定的 每次遍历的顺序都可能不一样。Golang会提前取一个随机数,把桶的遍历顺序随机化。 map还有一点就是非线程安全,因此在并发的情况下,不能使用map,而应该使用sync.map