程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有更简单的方法可以从 Go 中的地图中获取一段keys?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决有没有更简单的方法可以从 Go 中的地图中获取一段keys??

开发过程中遇到有没有更简单的方法可以从 Go 中的地图中获取一段keys?的问题如何解决?下面主要结合日常开发的经验,给出你关于有没有更简单的方法可以从 Go 中的地图中获取一段keys?的解决方法建议,希望对你解决有没有更简单的方法可以从 Go 中的地图中获取一段keys?有所启发或帮助;

例如,

package main

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

为了在 Go 中高效,最小化内存分配很重要。

这是一个老问题,但这是我的两分钱。PeterSO 的回答稍微简洁一些,但效率稍低一些。您已经知道它将有多大,因此您甚至不需要使用 append:

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

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

在大多数情况下,它可能不会有太大的不同,但它的工作量并不大,在我的测试中(使用具有 1,000,000 个随机int64键的映射,然后使用每种方法生成键的数组十次),大约是直接分配数组成员比使用 append 快 20%。

尽管设置容量可以消除重新分配,但 append 仍然需要做额外的工作来检查您是否已达到每次 append 的容量。

解决方法

有没有更简单/更好的方法可以从 Go 中的地图中获取一段keys?

目前我正在遍历地图并将键复制到切片:

i := 0
keys := make([]int,len(mymap))
for k := range mymap {
    keys[i] = k
    i++
}

大佬总结

以上是大佬教程为你收集整理的有没有更简单的方法可以从 Go 中的地图中获取一段keys?全部内容,希望文章能够帮你解决有没有更简单的方法可以从 Go 中的地图中获取一段keys?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。