为什么遍历Go-map是无序的

问题抛出 直接上代码

package mainimport ( "log" )func main(){ m := make(map[int]string) m[0] = "ttttt0" m[1] = "ttttt1" m[2] = "ttttt2" m[3] = "ttttt3" m[4] = "ttttt4"for key, value := range m{ log.Printf("k:%v,v:%v\n", key,value) } }

result:

为什么遍历Go-map是无序的
文章图片
image.png 从上面可以看出,对于每一次遍历结果都不相同。但是有一个规律,就是 从某个key开始遍历,如果结束再从头开始,为什么会出现这种现象呢?
for range 实现方法 汇编命令 go tool compile -S map.go >> t.S

为什么遍历Go-map是无序的
文章图片
image.png
mapinterinit 实现方法: /usr/local/go/src/runtime/map.go
为什么遍历Go-map是无序的
文章图片
【为什么遍历Go-map是无序的】思路来自:EDDYCJY

    推荐阅读