Go问答 Dig101:Go 之读懂 map 的底层设计

newbmiao · 2020年02月05日 · 最后由 newbmiao 回复于 2020年02月05日 · 41 次阅读

Dig101: dig more, simplified more and know more

在 golang 中,map是一个不可或缺的存在。

它作为哈希表,简单易用,既能自动处理哈希碰撞,又能自动扩容或重新内存整理,避免读写性能的下降。

这些都要归功于其内部实现的精妙。本文尝试去通过源码去分析一下其背后的故事。

我们不会过多在源码分析上展开,只结合代码示例对其背后设计实现上做些总结,希望可以简单明了一些。

希望看完后,会让你对 map 的理解有一些帮助。网上也有很多不错的源码分析,会附到文末,感兴趣的同学自行查看下。

(本文分析基于 Mac 平台上 go1.14beta1 版本。长文预警 ... )

文章目录

  • 0x01 map 的内部结构
  • 0x02 map 的 hash 方式
  • 0x03 map 的扩容方式
  • 0x04 map 的初始化
  • 0x05 map 的读取
  • 0x06 map 的赋值
  • 0x07 map 的删除
  • 0x08 map 的遍历

可以移步 微信版 阅读

<p>发现发错了不能删除啊</p>

newbmiao 关闭了讨论 02月12日 18:04
newbmiao 重新开启了讨论 02月14日 22:29
newbmiao 关闭了讨论 02月14日 22:29
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册