いくつかのgo配列の初期化と一般的な使用法をテストしていましたが、定義された長さで初期化された配列を展開できない理由がわかりません。GO配列の展開
package main
func main() {
arr0 := []int{1, 2, 3} //
add(arr0...) // OK
arr1 := [3]int{1, 2, 3} //
slice := arr1[:] //
add(slice...) // OK
arr2 := [3]int{} //
arr2[0] = 1 //
arr2[1] = 2 //
arr2[3] = 3 //
add(arr2...) // cannot use arr2 (type [3]int) as type
// []int in argument to add
}
func add(terms ...int) (sum int) {
for _, term := range terms {
sum += term
}
return
}
ようになります
。配列は静的な長さの値であり、可変引数はスライスを使用します。 – JimB
したがって、arr0:= [] int {1,2,3}を初期化するとき、実際には配列ではなくスライスを初期化しています。 – Gavello
はい、 '[] int {}'はスライスリテラルの構文です。 – JimB