在学习 go web编程那本书的时候,里面有一段,是判断用户复选框是否合法,采用以下代码
slice:=[]string{"football","basketball","tennis"}
a:=Slice_diff(r.Form["interest"],slice)
if a == nil{
return true
}
return false
我用的时候,发现Slice_diff 不是标准函数,好像是第三方的,于是我也建个包,把这个函数弄过来:
func Slice_diff(slice1, slice2 []interface{}) (diffslice []interface{}) {
for _, v := range slice1 {
if !In_slice(v, slice2) {
diffslice = append(diffslice, v)
}
}
return
}
然后,我就加入自己代码
//复选框验证
slice2 := []string{"football", "basketball", "tennis"}
a := beeku.Slice_diff(r.Form["interest"], slice2)
if a != nil {
fmt.Fprintf(w, "复选框选择错误")
return
}
但是一直报错,就是这句
beeku.Slice_diff(r.Form["interest"], slice2)
提示
Cannot use r.Form["interest"] (type []string) as type []interface{}
意思应该是不能把字符串切片转换为interface,interface这东西不是通用类型么,怎么会出现这样的错误,谁明白呢?
有疑问加站长微信联系(非本文作者)