単一の条件で複数の Go マップにわたるキーの存在を効率的に確認するにはどうすればよいですか?
複数のマップにわたるキーの存在の確認
複数のマップを操作する場合、多くの場合、特定のキーがすべてのマップに存在するかどうかを確認する必要があります。彼ら。次のアプローチは一般的ですが、
if v1, ok1 := map1["aaa"]; ok1 { ... } if v2, ok2 := map2["aaa"]; ok2 { ... }
には複数の if ステートメントが含まれます。 1 つの条件でこのチェックを実行するより簡潔な方法はありますか?
構文の圧縮の試行
考えられる解決策の 1 つは、両方のマップ内のキーの存在を評価してから、それらの交差を確認します:
v1, ok1 := map1["aaa"] v2, ok2 := map2["aaa"] if ok1 && ok2 { ... }
ただし、このアプローチでは、2 つの別々の割り当てとチェックインが必要です。
単一条件キー チェックの制限
結局のところ、Go 言語では 1 つの if 条件で複数のキーの存在をチェックできません。 Go 仕様によれば、マップ上のインデックス式は、キーの有無を示す追加のブール値を生成します。この特別な構文は、代入または初期化でのみ使用できます。
したがって、特別な v, ok := m[k] 形式だけを使用して結合キーの存在チェックを実行することはできません。
キーの存在チェックの代替手段
マップの値の型がインターフェイス型の場合nil 値を持たないことを保証できる場合、別のアプローチはタプル代入を使用してキーの存在を確認することです。
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 } // Usage example: if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { ... }
以上が単一の条件で複数の Go マップにわたるキーの存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
