有没有能判断silce中是否存在某值的方法?

例如:

    var slice_a []string{"a","b","c"}
    var x string = "a"

判断变量 x 是否存在 slice_a 中
有什么方便的办法吗?

共 3 个回复


stevenldj

为什么不用 map:

func main() {
    var map_a = map[string]bool{"a": true, "b": true, "c": true}
    var x string = "a"
    fmt.Println(map_a[x])
}

slice 可以遍历比较:

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

func main() {
    var slice_a = []string{"a", "b", "c"}
    var x string = "a"
    fmt.Println(contain(slice_a, x))
}

或者转换成字符串再查找:

func contain(sl []string, s string) bool {
    var str = "|" + strings.Join(sl, "|") + "|"
    return strings.Index(str, "|"+s+"|") >= 0
}

func main() {
    var slice_a = []string{"a", "b", "c"}
    var x string = "a"
    fmt.Println(contain(slice_a, x))
}
# 0

jimmykuu

遍历比较就可以了,字符串比较效率太低,加上比较容易出错。楼主的意思应该是有没有通用的方法,比如不光支持 []string ,还支持 []int 等,语言级别不支持的。

# 1