Python の "if x in" Construct に対する Go の答え
プログラミングでは、多くの場合、オブジェクト内の要素の存在を確認する必要があります。コレクション。 Python では、これは「if x in」構造を使用して簡潔に実現できます。しかし、Go は同様のメカニズムを提供していますか?
機能の実装
残念ながら、Go には組み込みの "if x in" 構造がありません。ただし、この機能は次の 2 つの方法で実装できます。
1. Slices.Contains の使用 (Go 1.18 以降)
Go 1.18 以降、この言語では、スライス内に指定された要素が存在するかどうかを確認するために使用できる、slices.Contains 関数が提供されています。
package main func main() { arr := []int{1, 2, 3} fmt.Println(slices.Contains(arr, 2)) // True }
2.カスタム関数の使用 (Go 1.18 より前のバージョン)
Go 1.18 より前では、このチェックを実行するには独自の関数を定義する必要がありました。以下に例を示します。
package main func stringInSlice(a string, list []string) bool { for _, b := range list { if b == a { return true } } return false } func main() { arr := []string{"a", "b", "c"} fmt.Println(stringInSlice("b", arr)) // True }
マップによる最適化
メンバーシップ チェックを頻繁に実行する場合は、配列またはスライスの代わりにマップを使用することをお勧めします。マップは定時検索を提供し、パフォーマンスを大幅に向上させます。
package main func main() { visitedURL := map[string]bool{ "http://www.google.com": true, "https://paypal.com": true, } if visitedURL[thisSite] { fmt.Println("Already been here.") } }
Go には Python の "if x in" 構造とまったく同等のものはありませんが、前述のアプローチは、さまざまなシナリオで要素の存在をチェックするための柔軟なソリューションを提供します。 .
以上がGo は Python の「if x in」のようなメンバーシップ チェックをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。