docs: 更新 Go 1.24 后 map 的哈希表实现说明
Author: Gzx-070829Created Aug 14, 2026Updated Aug 14, 2026
问题描述
在「6.2 哈希冲突 → 6.2.3 编程语言的选择」中,目前关于 Go map 的描述为:
Go 采用链式地址。Go 规定每个桶最多存储 8 个键值对,超出容量则连接一个溢出桶;当溢出桶过多时,会执行一次特殊的等量扩容操作,以确保性能。
这一描述对应的是 Go 1.23 及更早版本的 map 实现。
从 Go 1.24 开始,Go 已将内置 map 切换为基于 Swiss Table 的新实现。Swiss Table 属于开放寻址(open addressing)哈希表。
Go 官方博客:
- Faster Go maps with Swiss Tables
Go 当前 runtime 源码中的 internal/runtime/maps/map.go 也注明:
- map design is based on Abseil's Swiss Table design
- 核心结构类似开放寻址哈希表
建议
可以考虑将该段修改为类似:
Go 1.24 起,内置
map采用基于 Swiss Table 的开放寻址实现;Go 1.23 及更早版本使用桶与溢出桶的实现。
这样既能反映当前实现,也能保留旧版本的历史背景。
Source: krahets/hello-algo