golang 判断元素是否在切片中

在 Go 中,可以使用类型为 map[T]bool 的映射来判断切片中是否包含某个元素。

例如,假设你想要判断整型切片 s 中是否包含元素 x。你可以这样做:

// 声明一个名为 m 的映射,其中键的类型为 int,值的类型为 bool。
m := make(map[int]bool)

// 将 s 中的元素添加到映射中。
for _, v := range s {
    m[v] = true
}

// 判断 x 是否在 s 中。
if m[x] {
    fmt.Println(x, "is in s")
} else {
    fmt.Println(x, "is not in s")
}

整理之后为

func convertIntSlice2Map(slice []int) map[int]struct{} {
    set := make(map[int]struct{}, len(slice))
    for _, v := range slice {
        set[v] = struct{}{}
    }
    return set
}

func containerInt(slice []int, element int) bool {
    m := convertIntSlice2Map(slice)
    _, ok := m[element]
    return ok
}
View Code

一般方法为

Go 语言判断元素列表里是否包含某个元素,通常有两种方法:遍历列表、转为map后判断是否包含key。

Golang 几种判断 Contains/包含 的性能比较

posted @ 2023-03-02 11:19  易先讯  阅读(1683)  评论(0编辑  收藏  举报