Golang - Map底层实现
底层结构
- 使用哈希表作为底层实现
- 一个哈希表里可以有多个哈希表节点,也叫bucket(哈希桶)
- 每个bucket就保存了map中的一个或一组键值对
哈希冲突
- 当有两个或以上数量的键被哈希到了同一个bucket时,就称这些键发生了冲突
- Go使用链地址法来解决键冲突【具体操作就是插入key到map中时,当key定位的桶填满8个元素后,将会创建一个溢出桶,并且将溢出桶插入当前桶的所在链表尾部】
- 由于每个bucket可存放8个键值对,所以同一个bucket存放超过8个键值对时就会再创建一个键值对,用类似链表的方式将bucket连接起来