是否可以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}
。这是一种类型转换,对吧?
答案 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)
}