arrays - Go:用现有数组的类型和值定义多维数组?

标签 arrays go multidimensional-array

是否有可能 a) 定义 b) 使用现有数组初始化一个新的多维数组,就像在下面的代码中而不是 var b [2][3]int,只是说 var b [2]a ?
使用 a 的类型,无论它是什么,而不是对其进行硬编码(这错过了对 a 使用 [...] 的要点)。
也许同时处理初始化=复制值?

package main

func main () {
        a := [...]int{4,5,6}
        var b [2][3]int
        b[0],b[1] = a,a 
}

(我知道 slice 的简单和方便,但这个问题是关于理解数组的。)

编辑:不敢相信我忘记了 var b [2][len(a)]int,初学者的大脑卡住了。一行答案是 var b = [2][len(a)]int{a,a} 。那是类型转换,对吧?

最佳答案

下面的代码也可以。你的例子和我的例子都做同样的事情,而且都不应该比另一个快很多。

除非你使用 reflect 来制作你的 [3]int 的 slice (不是数组),否则你的新类型中不可能不重复 [3]int .即使在当前版本中也是不可能的。它在 tip 中,将在 Go 1.1 中发布。

package main

import "fmt"

func main() {
    a := [...]int{4,5,6}
    var b = [2][3]int{a, a}
    fmt.Println(b)
}

关于arrays - Go:用现有数组的类型和值定义多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13464838/

相关文章:

javascript - 如何使用 "new"将对象变量添加到数组?

javascript - 多个 jquery 元素的转换脚本

Rust 中类似 Golang 的延迟

php - usort 或 array_multisort?

java - 将二维数组写入字符串,然后写入 .txt 文件 - Java

c - 使用 getline 将字符串读取到指针数组中 (C)

javascript - 何时在 JavaScript 对象中使用数组(或混合使用它们)?

http - 在 Go 中使用 http.FileServer 禁用目录列表的好方法

go - 为什么这个 Go 程序中会出现数据竞争?

c - 无法初始化结构数组