package main
import "fmt"
func main(){
m := map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e"}
//slice
s := make([]int, len(m))
i := 0
for k, _ := range m {
s[i] = k
i++
}
fmt.Println(s)
}
以上代码在无闻的《go编程基础》第八集,21:25,无闻的结果显示,s的结果是乱序的,但是我自己机器上面测试确实有序的呢,为什么?
map 不能保证是有序的,hash的实现就是这样的。
但不保证有序,并非就一定无序,你这种小量的数据,在内存分配的时候,完全可以在一块连续的内存中存放。有序很正常。但一定不能依赖map的顺序。
#1
更多评论
嗯嗯,知道了,还有的是,无闻用的go1.0.3版本,我用的go1.1.2版本,对于map,是否有改动哦,听说是map的存储变成了二叉树,不知道是不是~
#2