是否有可能 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/