map遍历,为什么startBucket和offset要加个随机数?

来源:1-9 神奇的内置数据结构

weixin_慕设计2382076

2021-05-29 21:45:52

曹大你好,map遍历,为什么startBucket和offset要加个随机数?理论上从0来时便利不也是一样么?

写回答

1回答

Xargin

2021-05-29

Go 的设计者认为 hash 表遍历本身是不保证顺序的(比如扩容的时候,遍历,顺序就会变),所以不希望用户依赖这个顺序


在遍历的时候特意做了随机化,就是为了避免你依赖默认的输出顺序

1
hargin
回复
heixin_慕设计2382076
hp>你理解的没问题,hash 桶就是没有办法保证逻辑,但是在非扩容期间,你不插新元素,他遍历顺序就是固定的,有的程序员看到这样的输出就认为遍历一直是固定顺序,可能就会对这个顺序产生逻辑依赖

h021-05-30
共2条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程