在 Go 中从 Map 中切片键
问题:
有没有更有效的方法从映射中获取键的切片去吗?
目前,常见的方法是迭代地图,将键复制到切片中:
i := 0 keys := make([]int, len(mymap)) for k := range mymap { keys[i] = k i++ }
答案:
使用具有指定切片容量的 make 函数可以通过消除对重新分配:
keys := make([]int, len(mymap)) i := 0 for k := range mymap { keys[i] = k i++ }
这种方法稍微更简洁,并且消除了与附加到切片相关的开销。在包含大量键的映射的测试中,它被证明比使用append函数快20%。
虽然make函数设置了切片的容量,但值得注意的是append仍然会产生一些检查每个附加是否已达到容量的额外开销。在这种情况下,直接分配数组成员可以提高性能。
以上是如何有效地从 Go Map 中切出键?的详细内容。更多信息请关注PHP中文网其他相关文章!