ホームページ  >  記事  >  バックエンド開発  >  Go が「append」の未使用変数エラーにフラグを立てるのに、直接スライス割り当ての場合はフラグを立てないのはなぜですか?

Go が「append」の未使用変数エラーにフラグを立てるのに、直接スライス割り当ての場合はフラグを立てないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-14 19:13:02252ブラウズ

Why Does Go Flag an Unused Variable Error for `append` But Not for Direct Slice Assignment?

未使用の「追加」結果に対する 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。