未使用の「追加」結果に対する Go コンパイル エラー
Go コンパイラは、スライスに追加するときに未使用変数のコンパイル エラーを発行する場合がありますが、スライスに追加しない場合は、結果を使用して。この動作は、変数を使用せずに宣言すると未使用変数エラーが発生する他の言語とは異なります。
Go では、変数が読み取られない場合にのみ、未使用変数の存在にエラーのフラグが立てられます。 append() を使用してスライスに追加するには、関数に渡されるときにスライスを読み取る必要があります。マップ キーに値を割り当てるときにも同様の動作が観察されます。
次のコードを考えてみましょう:
var mySlice []string mySlice = append(mySlice, "halo")
この例では、結果が他では使用されていません。したがって、このコードは未使用変数エラーを生成しません。
ただし、直接代入演算子を使用してスライスに値を割り当てる場合、スライス ヘッダーの読み取りは必要ありません。その結果、次のコードは未使用変数エラーを生成します:
var i = []int{0} i = []int{1}
このエラーを解決するには、スライスを再割り当てする前に使用できます。例:
var i = []int{0} i[0] = 1 i = []int{1}
i[0] = 1 がスライス ヘッダーを読み取るため、このコードは正常にコンパイルされます。
以上がGo が「append」の未使用変数エラーにフラグを立てるのに、直接スライス割り当ての場合はフラグを立てないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。