1. ホーム
  2. dictionary

[解決済み] Goでマップにキーが含まれているかどうかを確認するには?

2022-03-16 20:59:20

質問

マップを反復処理できることは知っている m によるものです。

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

を実行してキーを探しますが、マップにキーが存在するかどうかをテストする、より効率的な方法はないでしょうか?

に答えが見つかりませんでした。 言語仕様 .

どのように解決するのですか?

一行で答える。

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

説明する。

if 文は、条件文と初期化文の両方を含むことができます。上の例では両方を使っています。

  • は2つの変数を初期化します。 val はマップから "foo" の値か "zero value" (この場合は空文字列) を受け取ります。 ok はboolを受け取り、それを true foo"が実際にマップに存在した場合

  • が評価する ok となります。 true もし、"foo"がマップにあった場合

もし、"foo"が本当にマップに存在するのであれば、そのボディは if 文が実行され val はそのスコープにローカルになります。