我想检查一个值是否在一个值中。实现这一目标的最佳方法是什么?类似于以下内容:
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")
}
}
白衣非少年
三国纷争
相关分类