Golang - 从地图上获取一部分密钥

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

有没有更简单/更好的方法从地图中获取一段键呢?

目前,我正在遍历映射并将键复制到一个片段中:

i := 0
keys := make([]int, len(mymap))
for k := range mymap {
    keys[i] = k
    i++
}
提问于
用户回答回答于

例如,

package main

func main() {
    mymap := make(map[int]string)
    keys := make([]int, 0, len(mymap))
    for k := range mymap {
        keys = append(keys, k)
    }
}

要想在Go中发挥效率,必须尽量减少内存分配。

用户回答回答于

keys := make([]int, len(mymap))

i := 0
for k := range mymap {
    keys[i] = k
    i++
}

在大多数情况下,这可能不会有太大的区别,但这并不是更多的工作,在我的测试中(使用1,000,000随机地图)int64然后用每个方法生成10次键数组),直接分配数组成员的速度比使用追加方法快20%。

扫码关注云+社区