当前位置: 首页 > 知识库问答 >
问题:

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

鲁财
2023-03-14

我有

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);

像这样简单的方法之一

围棋里有这样的东西吗?

共有2个答案

潘皓
2023-03-14

我不打算添加任何新内容,因为我的答案是Eli代码的副本。但我应该注意到,Go propose比C/C更简单,但不像Python/JS那么简单。这并不是隐藏一个成本“魔术”电话。

陆俊智
2023-03-14

Go有字符串。加入字节。加入,但没有通用功能来加入/协调切片。一旦泛型被引入到语言中,这种功能就有可能被添加到标准库中。

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

var newArr []int32
for _, a := range arr {
  newArr = append(newArr, a...)
}
 类似资料:
  • 我有过 我想要 在JS我可以做 作为许多类似这样的简单方法之一 围棋里有这样的东西吗?

  • 问题内容: Go编译器抱怨我的代码将切片附加到切片。以下是相关摘录: 该行生成以下编译器消息: 我知道,根据Go Blog帖子中 标题为Append:the Built-in function 一节下的示例,将切片追加到切片会很好。 问题答案: 您需要使用: 另外,还请格式化您的代码:) 您还应该阅读Wiki上的Slice Tricks。

  • 在玩代码时,我注意到一个奇怪的行为,我不知道如何解释背后的逻辑 我希望执行次。然后我看到它继续运行(想象是100000而不是10),并且假设开发人员(VS)将(这是意料之中的),因此每次进入时输出都是次。 但后来证明从未初始化。 所以我的问题是为什么?这是一种未定义的行为吗?这不是一个标准的代码吗?

  • 以下代码的输出令我惊讶: 在操场上运行时(https://play.golang.org/p/Ph67tHOt2Z_I)输出如下: 我相信我对切片的处理是正确的;据我所知,它在NewThing()中被初始化为nil,并在Add()中被追加(确保从append返回的值只分配给它的第一个参数)。 我错过了一些非常明显的东西吗? 我查看了以下资源以获得解释: https://gobyexample.co

  • 问题内容: 我有一个列表看起来像这样: 我想把它弄平 有没有使用numpy的轻量级功能来执行此操作? 问题答案: 如果没有numpy(),一种使用方式 是: 或者作为另一种Python方式,您可以使用 列表理解 : 另一个非常适合短列表的功能方法也可以在Python2和Python3中使用(不要将其用于长列表): 为了使其更快一点,您可以使用内置,而不是: 基准: 使用@Will答案的基准测试(对

  • 问题内容: 我正在尝试实现2个简单的结构,如下所示: 我究竟做错了什么?我只想在框结构上调用addItem方法并在其中传递一个项目 问题答案: 嗯…这是人们在Go中附加到切片时最常犯的错误。您必须将结果分配回slice。 另外,您已经定义了类型,因此将该方法称为