go语言map扩容 go语言map扩容原理( 六 )


为什么遍历 map 是无序的?
如果发生过迁移,key 的位置发生了重大的变化,有些 key 飞上高枝,有些 key 则原地不动 。这样,遍历 map 的结果就不可能按原来的顺序了 。
如果就一个写死的 map , 不会向 map 进行插入删除的操作,按理说每次遍历这样的 map 都会返回一个固定顺序的 key/value 序列吧 。但是 Go 杜绝了这种做法,因为这样会给新手程序员带来误解,以为这是一定会发生的事情,在某些情况下,可能会酿成大错 。
Go 做得更绝,当我们在遍历 map 时 , 并不是固定地从 0 号 bucket 开始遍历,每次都是从一个**随机值序号的 bucket开始遍历 , 并且是从这个 bucket 的一个 随机序号的 cell **开始遍历 。这样,即使你是一个写死的 map,仅仅只是遍历它 , 也不太可能会返回一个固定序列的 key/value 对了 。
go语言map扩容的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言map扩容原理、go语言map扩容的信息别忘了在本站进行查找喔 。

推荐阅读