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

kil*_*s76 4 arrays go multidimensional-array

是否有可能a)定义b)使用现有数组初始化一个新的多维数组,如下面的代码而不是var b [2][3]int,只是说出类似的东西var b [2]a
使用任何类型的类型,而不是硬编码(它错过了使用[...]的点).
也许处理初始化=同时复制值?

package main

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

(我知道切片的简易性和方便性,但这个问题是关于理解数组.)

编辑:不敢相信我忘记了var b [2][len(a)]int,初学者的大脑冻结了.一线答案是var b = [2][len(a)]int{a,a}.这是一种类型转换,对吗?

Ste*_*erg 5

以下代码也可以使用.你和我的例子都做同样的事情,也不应该比另一个快得多.

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

package main

import "fmt"

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

  • 谢谢!我似乎也有一个初学者的大脑冻结,因为`var b [2] [len(a)] int`似乎工作正常. (2认同)