複数のマップでの効率的なキーの存在チェック
Go では、キーを取得するための効率的なデータ構造であるマップを操作するのが一般的です。 -値のペア。ただし、開発者が提供したコードは、2 つの別個のマップでキーの存在を確認する必要があることを示しています。このプロセスをもっと簡潔にできるかどうかという疑問は残ります。
答えで説明したように、Go でキーの存在を確認するための特殊な v, ok := m[k] 形式の使用は、単一変数の代入に限定されます。 。したがって、このフォームを使用して 2 つのチェックを 1 つの if 条件に結合することは現実的ではありません。
ただし、目的の機能を実現する別のアプローチがあります。
タプルの代入:
マップの値の型がインターフェイス型であり、nil 値が使用されていないことが保証できる場合、 2 つのインデックス式を使用してタプルの代入を実行できます:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
ヘルパー関数:
キーの存在チェックを実行するヘルパー関数を作成できます。両方をマップして結果を返します:
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 サイトの他の関連記事を参照してください。