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

Map Go地图在内部使用什么数据结构?,map,go,Map,Go,我对以下方面感兴趣: 如何在内部实现Go地图?(哈希表、树…) 如果Go映射是哈希表,那么使用哪个哈希函数 如果围棋地图是树,它们是AVL、红黑还是其他类型 如果Go贴图基于数组,它们如何避免/处理冲突 Go映射在内部是哈希表 正如@twoo在评论中阐明的,如果CPU有支持它的指令,Go将使用基于AES的哈希 否则Go将使用a(如Patrick Mylund Nielsen所述) 链接: 官方围棋博客: 地图源代码: 哈希源代码: GoNuts集团: Go映射在内部是哈希表 正如@twoo在

我对以下方面感兴趣:

  • 如何在内部实现Go地图?(哈希表、树…)
  • 如果Go映射是哈希表,那么使用哪个哈希函数
  • 如果围棋地图是树,它们是AVL、红黑还是其他类型
  • 如果Go贴图基于数组,它们如何避免/处理冲突

Go映射在内部是哈希表

正如@twoo在评论中阐明的,如果CPU有支持它的指令,Go将使用基于AES的哈希

否则Go将使用a(如Patrick Mylund Nielsen所述)

链接:

  • 官方围棋博客:
  • 地图源代码:
  • 哈希源代码:
  • GoNuts集团:

Go映射在内部是哈希表

正如@twoo在评论中阐明的,如果CPU有支持它的指令,Go将使用基于AES的哈希

否则Go将使用a(如Patrick Mylund Nielsen所述)

链接:

  • 官方围棋博客:
  • 地图源代码:
  • 哈希源代码:
  • GoNuts集团:

(这正确地回答了主要问题,但关于使用的哈希函数,请在Mylund的帖子之后,在较新的英特尔芯片上对某些哈希键类型使用基于AES的哈希。提交了一个编辑以尝试反映这一点。)@twoo啊,确实如此。我无法获得您的编辑,但我用正确的信息更新了答案。谢谢你的信息!(这正确地回答了主要问题,但关于所使用的哈希函数,在Mylund的帖子之后,在较新的Intel芯片上对某些哈希键类型使用基于AES的哈希。提交了一个编辑以尝试反映这一点。)@twoo啊,确实如此。我无法获得您的编辑,但我用正确的信息更新了答案。谢谢你的信息!请注意,无论Go内部使用什么数据结构,都不应依赖于此。支持映射的数据结构不属于规范的一部分,可能会在不另行通知的情况下更改。请注意,“Go”是一个规范,目前至少有两个成熟的实现——所谓的“GC”套件(最初由Google的人创建,现在被视为参考实现)和gccgo——一个GCC前端。还有一点需要注意的是,语言规范没有强制执行映射的任何特定实现,因此它可以在任何实现中从一个版本更改到另一个版本。请注意,无论Go内部使用什么数据结构,都不应该依赖于此。支持映射的数据结构不属于规范的一部分,可能会在不另行通知的情况下更改。请注意,“Go”是一个规范,目前至少有两个成熟的实现——所谓的“GC”套件(最初由Google的人创建,现在被视为参考实现)和gccgo——一个GCC前端。还有一点需要注意的是,语言规范并没有强制实施映射的任何特定实现,因此它可以在任何实现中从一个版本更改到另一个版本。