4

是否可以 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 
}

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

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

4

1 回答 1

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)
}
于 2012-11-20T00:38:18.733 回答