Go地图在内部使用什么数据结构?

y0s*_*1an 1 map go

我对以下内容感兴趣:

  • 如何在内部实施Go地图?(哈希表,树......)
  • 如果Go贴图是散列表,使用哪个散列函数?
  • 如果Go地图是树木,它们是AVL,红黑还是其他类型?
  • 如果Go贴图是基于阵列的,它们如何避免/处理碰撞?

ANi*_*sus 6

Go map是内部的哈希表

正如@twotwotwo在评论中澄清的那样,如果CPU有支持指令,Go将使用基于AES的哈希.

否则Go将使用FNV哈希函数(如Patrick Mylund Nielsen @ Go-Nuts所述)

链接:

  • (这正确回答了主要问题,但是关于使用的哈希函数,Go [切换](https://codereview.appspot.com/7716047/)在较新的英特尔芯片上使用基于AES的哈希对某些哈希密钥类型之后Mylund的帖子.提交了一个编辑试图反映出来.) (3认同)