golang map遍历为什么是无序的?
遍历map
package main
import "fmt"
func main() {
var m = map[string]string{
"zhangsan": "张三",
"lisi": "李四",
"wangwu": "王五",
"alici": "爱丽丝",
}
for k, v := range m {
fmt.Println(k, v)
}
fmt.Println("----------分隔符------------")
for k, v := range m {
fmt.Println(k, v)
}
}
zhangsan 张三
lisi 李四
wangwu 王五
alici 爱丽丝
----------分隔符------------
lisi 李四
wangwu 王五
alici 爱丽丝
zhangsan 张三
map
底层使用哈希表实现,在运行过程中会进行扩容,扩容后顺序会发生变化;但是如果不进行扩容的话,是可以保证有序的;那为什么即使没有发生扩容,也还是无序的呢?
这是为了避免程序员以来这种不稳定的特性,所以遍历时故意加了随机数