Dig101:Go之讀懂map的底層設計

newbmiao發表於2020-02-06

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 的遍歷

可以移步 微信版 閱讀

相關文章