【问题标题】:How to concatenate / append a 2D slice into 1D slice without for loop如何在没有 for 循环的情况下将 2D 切片连接/附加到 1D 切片中
【发布时间】:2020-04-22 01:12:05
【问题描述】:

我有

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 中有这样的东西吗?

【问题讨论】:

  • for 循环有什么问题?
  • 没什么,但由于我从 JS 搬来,我想知道是否有类似的做事方式。

标签: arrays go slice


【解决方案1】:

我不会添加任何新内容,因为我的答案是一份 Eli 的代码。但是我要注意的是,Go 提议比 C/C++ 更简单,但不像 Python/JS 那样简单。它并没有隐藏成本“魔法”调用。

【讨论】:

  • 应该是评论吧,也许吧?
【解决方案2】:

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

与此同时,使用循环执行此操作已经足够清晰和简洁。

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

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2021-06-16
    • 1970-01-01
    • 2021-03-28
    • 2015-11-09
    • 2017-09-22
    相关资源
    最近更新 更多