ホームページ > バックエンド開発 > Golang > 複数の Go マップにわたるキーの存在を効率的に確認するにはどうすればよいですか?

複数の Go マップにわたるキーの存在を効率的に確認するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-17 08:04:25
オリジナル
663 人が閲覧しました

How Can I Efficiently Check for Key Existence Across Multiple Go Maps?

複数のマップでの効率的なキーの存在チェック

Go では、キーを取得するための効率的なデータ構造であるマップを操作するのが一般的です。 -値のペア。ただし、開発者が提供したコードは、2 つの別個のマップでキーの存在を確認する必要があることを示しています。このプロセスをもっと簡潔にできるかどうかという疑問は残ります。

答えで説明したように、Go でキーの存在を確認するための特殊な v, ok := m[k] 形式の使用は、単一変数の代入に限定されます。 。したがって、このフォームを使用して 2 つのチェックを 1 つの if 条件に結合することは現実的ではありません。

ただし、目的の機能を実現する別のアプローチがあります。

  1. タプルの代入:
    マップの値の型がインターフェイス型であり、nil 値が使用されていないことが保証できる場合、 2 つのインデックス式を使用してタプルの代入を実行できます:

    if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
        // ...
    }
    ログイン後にコピー
  2. ヘルパー関数:
    キーの存在チェックを実行するヘルパー関数を作成できます。両方をマップして結果を返します:

    func idx(m1, m2 map[string]interface{}, k string) (
        v1, v2 interface{}, ok1, ok2 bool) {
    
        v1, ok1 = m1[k]
        v2, ok2 = m2[k]
        return
    }
    ログイン後にコピー

    この関数は次のように使用できます。

    if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
        // ...
    }
    ログイン後にコピー

これらのアプローチにより、単一の条件文内の複数のマップ内のキーの存在を簡潔かつ効率的にチェックできます。

以上が複数の Go マップにわたるキーの存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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