マップを反復処理する方法は知ってい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 ステートメントの条件 (セミコロンに注意) の前に初期化ステートメントを置くことができます。その結果、val
andのスコープok
は if ステートメントの本体に限定されます。これは、そこにのみアクセスする必要がある場合に便利です。