ホームページ >バックエンド開発 >Golang >Go でリストのメンバーシップを効率的に確認するにはどうすればよいですか?

Go でリストのメンバーシップを効率的に確認するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 16:30:14212ブラウズ

How Can I Efficiently Check List Membership in Go?

Go でリストのメンバーシップをチェックする: Python の "in" キーワードの代替

Python では、"in" キーワードは便利なリスト内に値が存在するかどうかを確認する方法。ただし、Go は直接同等のものを提供しません。

Map を使用した "in" キーワードの近似

Go の 1 つのアプローチは、map[string] を利用することです。集合の表現としての bool。有効な値をキーとして保存し、真の値を割り当てることで、キーがマップ内に存在するかどうかをチェックしてメンバーシップをテストできます。

valid := map[string]bool{"red": true, "green": true, "yellow": true, "blue": true}

if valid[x] {
    fmt.Println("found")
} else {
    fmt.Println("not found")
}

ゼロ値の利用

マップ内でキーが見つからない場合、bool のゼロ値 (false) が返されるという事実を利用します。これにより、真の値の明示的な割り当てを省略でき、初期化が簡素化されます。

valid := map[string]bool{"red", "green", "yellow", "blue"}

if valid[x] {
    fmt.Println("found")
} else {
    fmt.Println("not found")
}

最適化

有効な値が多数あるシナリオの場合は、次の使用を検討してください。マップを初期化するための for range ループ。これにより、コンパクトなソリューションが提供されます:

for _, v := range []string{"red", "green", "yellow", "blue"} {
    valid[v] = true
}

さらに、ブール値の繰り返しを避けるために const 変数を定義してコードを最適化できます:

const t = true
valid := map[string]bool{"red": t, "green": t, "yellow": t, "blue": t}

以上がGo でリストのメンバーシップを効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。