golang map遍历为什么是无序的?

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底层使用哈希表实现,在运行过程中会进行扩容,扩容后顺序会发生变化;但是如果不进行扩容的话,是可以保证有序的;那为什么即使没有发生扩容,也还是无序的呢?

这是为了避免程序员以来这种不稳定的特性,所以遍历时故意加了随机数

你可能感兴趣的:(golang map遍历为什么是无序的?)