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

时间:2012-11-20 00:29:31

标签: 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 
}

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

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

1 个答案:

答案 0 :(得分: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)
}