首页 > 解决方案 > 初始化地图时如何设置容量可以防止重新散列

问题描述

s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
capacity := len(s)
m := make(map[int]bool, capacity)
for _, n := range s {
    m[n] = true
}

地图是否会在 for 循环中重新散列?或者容量应该乘以一个因子以防止重新散列,例如:

capacity := len(s) * 1.3

标签: dictionarygo

解决方案


你不需要一个因素。规格:制作切片、地图和元素:

make使用地图类型和大小提示调用n将创建一个带有初始空间的地图以保存n地图元素。精确的行为取决于实现。

也来自内置的文档make()

地图:为空地图分配足够的空间来容纳指定数量的元素。可以省略大小,在这种情况下分配一个小的起始大小。


推荐阅读