ホームページ > バックエンド開発 > Golang > Go 変数宣言における空白の識別子「_」の目的は何ですか?

Go 変数宣言における空白の識別子「_」の目的は何ですか?

Patricia Arquette
リリース: 2025-01-02 20:10:39
オリジナル
443 人が閲覧しました

What is the Purpose of the Blank Identifier

Go の変数宣言の謎の "_,"

Go では、次のような変数宣言によく遭遇します。

_, prs := m["example"]
ログイン後にコピー

この _, 構造体の目的は何ですか、また、なぜそれが _, 構造体の代わりに使用されるのですか?より直感的な prs := m["example"]?

空白の識別子: 戻り値の無視

_ は「空白の識別子」を表します。これにより、開発者は関数からの戻り値を破棄できます。この場合、m["example"] 式は、「example」キーの要素とキーが存在するかどうかを示すブール値の 2 つの値を含むタプルを返します。 _,, を使用すると、値ではなく、キーの存在のみが注目されます。

無効な宣言の防止

Go は変数宣言を厳密に強制します。値を指定せずに prs を宣言した場合、コンパイラはエラーを発生させます。代わりに、空白の識別子を使用して、戻り値は認識するが、それを使用するつもりはないことを Go に伝えます。

効率とコードの可読性

空白の使用識別子を使用すると、不要な変数の宣言が回避され、コードの効率が向上します。また、どの戻り値が無視されているかを明確にすることで、可読性も向上します。

一般的な使用例

  • マップ キーの存在チェック: _、現在 := timeZone[tz]
  • チャンネル読み取り有効性: _、err := os.Read(f)
  • ループ反復値の破棄: for _、値 := range array { ... }

カスタム命名規則

一部の開発者は、空白の識別子として使用される変数に「ok」や「err」などの名前を付ける規則を採用しています。これにより、可読性と一貫性がさらに向上します。

次のコード スニペットを考えてみましょう。

if _, err := os.Stat(path); os.IsNotExist(err) {
    fmt.Printf("%s does not exist\n", path)
}
ログイン後にコピー

この例では、空白の識別子を使用します。ファイルの属性を気にせずに、指定されたパスにファイルが存在するかどうかをテストします。

以上がGo 変数宣言における空白の識別子「_」の目的は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート