ホームページ > バックエンド開発 > Golang > Go は Python の「if x in」のようなメンバーシップ チェックをどのように処理しますか?

Go は Python の「if x in」のようなメンバーシップ チェックをどのように処理しますか?

Barbara Streisand
リリース: 2024-12-18 17:19:11
オリジナル
363 人が閲覧しました

How Does Go Handle Membership Checks Like Python's

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート