互联网面试宝典

您现在的位置是: 首页 > Golang

问题详情

golang 中 map 的数据结构是什么?是怎么实现扩容?

面试宝典 2023-06-12 Web前端开发工程师 139
golang 中 map 的数据结构是哈希表。实现方式是数组+链表,即利用数组来存储哈希桶,每个桶中可以存储若干链表节点,其中每个节点包含一个 key 和一个 value。

当 map 中元素个数越来越多时,数组需要扩容来提供更多的桶,以减少哈希冲突。在扩容时,golang 会创建一个新的数组,将原来的元素逐一重新计算哈希值并插入新的桶中。这个过程可能会比较耗时,因此 golang 在实现中使用了分步扩容的方法,即只会在插入新元素时检查是否需要扩容,而不是一次性将整个 map 进行扩容。同时也使用了指数级增长的方式来调整扩容的大小,以提高效率。