Golang でスライスが要素を含むかどうかをチェックする

Jay Singh 2022年8月23日
Golang でスライスが要素を含むかどうかをチェックする

Go には、特定の値がスライスに属しているかどうかを判断するための言語概念または標準ライブラリ関数がありません。探しているスライスと要素の 2つのパラメーターを使用して、独自の contains() 関数を作成する必要があります。

このチュートリアルでは、Golang を使用して要素が存在するかどうかを判断する方法を学習します。

contains() 関数を使用して、要素がスライスに存在するかどうかを確認する

この次の例では、contains() を使用して、要素がスライスに存在するかどうかを確認します。

例 1:

package main

import "fmt"

func contains(elems []string, v string) bool {
    for _, s := range elems {
        if v == s {
            return true
        }
    }
    return false
}
func main() {
    fmt.Println(contains([]string{"a", "b", "c"}, "b"))
    fmt.Println(contains([]string{"a", "b", "c"}, "d"))
}

出力:

true
false

次の例では、slice1 の整数のスライスを取得します。このスライスは、要素 5 が存在するかどうかを確認するために調べられます。

例 2:

package main

import "fmt"

func main() {
    slice1 := []int{1, 2, 3, 4, 5}
    var element int = 5

    var result bool = false
    for _, x := range slice1 {
        if x == element {
            result = true
            break
        }
    }
    if result {
        fmt.Print("Element is present.")
    } else {
        fmt.Print("Element is not present.")
    }
}

出力:

Element is present.

最後の例では、s という配列に名前のスライスが含まれており、"Rick""Mike"が存在するかどうかを確認します。

例 3:

package main

import "fmt"

func contains(s []string, str string) bool {
    for _, v := range s {
        if v == str {
            return true
        }
    }

    return false
}

func main() {
    s := []string{"Jay", "Rick", "Morty", "Jerry"}
    fmt.Println(contains(s, "Rick"))
    fmt.Println(contains(s, "Mike"))
}

出力:

true
false

関連記事 - Go Slice