Go でマップにキーが含まれているかどうかを確認するにはどうすればよいでしょうか? 質問する

Go でマップにキーが含まれているかどうかを確認するにはどうすればよいでしょうか? 質問する

マップを反復処理する方法は知っていmます

for k, v := range m { ... }

キーを探すのですが、マップ内でキーが存在するかどうかをテストするより効率的な方法はありますか?

ベストアンサー1

マップにキーが含まれているかどうかを確認する方法は次のとおりです。

val, ok := myMap["foo"]
// If the key exists
if ok {
    // Do something
}

これは 2 つの変数を初期化します。 は、valマップに存在する場合は「foo」の値、存在しない場合は「ゼロ値」(この場合は空の文字列)okです。 は、キーが存在する場合にboolに設定される です。true

必要に応じて、これをワンライナーに短縮することもできます。

if val, ok := myMap["foo"]; ok {
    //do something here
}

Go では、if ステートメントの条件 (セミコロンに注意) の前に初期化ステートメントを置くことができます。その結果、valandのスコープokは if ステートメントの本体に限定されます。これは、そこにのみアクセスする必要がある場合に便利です。

おすすめ記事