gpt4 book ai didi

go - 有没有一种惯用的方法来为 golang slice 做 "in"

转载 作者:IT王子 更新时间:2023-10-29 01:49:43 25 4
gpt4 key购买 nike

<分区>

我想检查一个值是否在值的 slice 中。实现这一目标的最佳方法是什么?类似于以下内容:

if "foo" in []string{"foo", "bar"}...

我写了下面的代码,但不确定它是多么地道(golang 新手):

// Convert a slice or array of a specific type to array of interface{}
func ToIntf(s interface{}) []interface{} {
v := reflect.ValueOf(s)
// There is no need to check, we want to panic if it's not slice or array
intf := make([]interface{}, v.Len())
for i := 0; i < v.Len(); i++ {
intf[i] = v.Index(i).Interface()
}
return intf
}
func In(s []interface{}, val interface{}) bool {
for _, v := range s {
if v == val {
return true
}
}
return false
}

因此,为了使用它,这是我编写的测试方法。

func TestIn(t *testing.T) {
s := []string{"foo", "bar", "kuku", "kiki"}
for _, v := range s {
if !In(ToIntf(s), v) {
t.Error("Should be in")
}
}
if In(ToIntf(s), "foobar") {
t.Error("Should not be in")
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com