回答:
go :=
とには2種類の代入演算子があり=
ます。これらは(割り当てに関して)意味的に同等ですが、最初のものは「短い変数宣言」(http://golang.org/ref/spec#Short_variable_declarations)でもあります。つまり、左側に少なくとも1つの正しいとするための新しい変数宣言。
2番目を単純な代入ステートメントに変更することができます:=
-> =
または、アルゴリズムに問題がなければ、新しい変数を使用できます。
:=
一緒に使用できません_
か?例_ := someFunc()
補足として、再宣言は多変数の短い宣言でのみ使用できます
言語仕様からの引用:
通常の変数宣言とは異なり、短い変数宣言は、同じブロック内で同じ型を使用して最初に宣言された変数を再宣言する場合があり、非空白変数の少なくとも1つが新しいものです。結果として、再宣言は、多変数の短い宣言でのみ使用できます。再宣言によって新しい変数が導入されることはありません。元の値に新しい値を割り当てるだけです。
package main
import "fmt"
func main() {
a, b := 1, 2
c, b := 3, 4
fmt.Println(a, b, c)
}
ここでgolangの変数の再宣言については非常に良い例です: https://stackoverflow.com/a/27919847/4418897
myArray :=[...]int{12,14,26}
前のコメントで述べたように、 :=
は一種の短縮形および/または変数宣言の短縮形です。
したがって、上記の文では2つのことを行っています。
ここで何をしているので、コードの2番目の部分は失敗します。
myArray :=[...]int{11,12,14} //error pointing on this line
すでに整数値が含まれている既存の変数myArrayをRE宣言しています。
これは機能します:
myArray = [...]int{11,12,14} // NO error will be produced by this line
それは、整数配列を既存の(事前宣言/初期化された)変数に割り当てているからです。
myArray,x = [...]int{11,12,14},3