如何在没有for循环的情况下将2D切片连接/附加到1D切片中

时间:2020-01-03 13:03:10

标签: arrays go slice

我有

arr := [][]int32 {{1,2,3} ,{4,5,6}, {7,8,9}}

我想要

newArr := []int32 {1,2,3,4,5,6,7,8,9}

在JS中我可以做

arr1d = [].concat(...arr2d);

作为this

等许多简单方法之一

在Go中有这样的东西吗?

2 个答案:

答案 0 :(得分:2)

Go具有strings.Joinbytes.Join,但是没有通用功能来加入/合并切片。 once generics are introduced into the language这种功能可能会添加到标准库中。

与此同时,使用循环进行此操作非常清晰简洁。

var newArr []int32
for _, a := range arr {
  newArr = append(newArr, a...)
}

答案 1 :(得分:-1)

我不会添加任何新内容,因为我的答案是Eli代码的副本。但是我应该指出,Go proposal比C / C ++更简单,但没有Python / JS那样简单。它并没有隐藏一个成本高昂的“魔术”电话。