从地图的键和Go中的值创建数组

时间:2017-08-08 14:22:50

标签: go

从地图的键和值创建数组的最短(和惯用)方法是什么,不会过多地影响时间复杂度?

例如,从以下地图:

map[string]string { "1":"a", "2":"b" }

我需要创建以下数组:

[]string{"1","a", "2","b"}

我可以在Scala中执行以下操作:

val myMap = Map("1" -> "a", "2" -> "b")
myMap.keySet ++ myMap.values

谢谢。

1 个答案:

答案 0 :(得分:10)

最简单的方法是迭代映射,因为在Go中语法允许直接访问键和值并将它们转储到数组中。

m := map[string]string { "1":"a", "2":"b" }
arr := []string{}
for k, v := range m { 
   arr = append(arr, k, v)
}

这里有一点需要注意:在Go中,地图迭代顺序是随机的,正如您在此处看到的,在“迭代顺序”下:

https://blog.golang.org/go-maps-in-action

因此,如果您希望生成的数组具有特定的排序,则应首先转储密钥和顺序(如同一个博客条目中所示)。

游乐场(没有排序部分):

https://play.golang.org/p/mCe6eEy25A