マップを使用した Go リストでの効率的な値チェック
Go でリストを扱うとき、値が存在するかどうかを確認する必要が生じる場合があります。リスト内で。 Python にはこの目的に便利な "in" キーワードが用意されていますが、Go には直接同等のキーワードがありません。
1 つのアプローチは、各値を任意の整数値にマップする set イディオムを利用することです。ただし、この方法では未使用の整数値を指定する必要があり、面倒になる可能性があります。
効率的なセット操作のためのマップの利用
別の解決策は、map[string を使用することです。 ]ブールをセットとして。有効な値をブール値「true」にマッピングすることで、次のようにメンバーシップをテストできます。
valid := map[string]bool{"red": true, "green": true, "yellow": true, "blue": true} if valid[x] { fmt.Println("found") }
マップに存在しないキーをクエリすると、存在しないことを示すデフォルトの「false」値が返されます。 .
初期化イディオムによるコードの最適化
初期化プロセスでは、有効な値のスライスと for-range ループの使用を検討してください:
for _, v := range []string{"red", "green", "yellow", "blue"} { valid[v] = true }
または、簡潔な初期化のために 1 文字のブール定数を定義します:
const t = true valid := map[string]bool{"red": t, "green": t, "yellow": t, "blue": t}
これらの戦略を使用すると、Go のマップ タイプの機能を利用しながら、Python の "in" キーワードを必要とせずに、Go リスト内の値のメンバーシップを効率的にチェックできます。セットのような機能。
以上がGo リスト内の値の存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。