4

の代わりに次のコードのように、既存の配列を使用して新しい多次元配列を初期化することは可能ですvar b [2][3]intvar 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編集:初心者の脳がフリーズするのを忘れたなんて信じられない. 1行の答えはvar b = [2][len(a)]int{a,a}. 型変換ですよね?

4

1 に答える 1

5

次のコードも機能します。あなたの例と私の例はどちらも同じことを行い、どちらも他のものよりもはるかに高速ではありません。

Reflect を使用して のスライス (配列ではない) を作成しない限り、新しい型で[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 に答える