~~~
对这种 [class news name age] 返回什么类型啊 API返回的
我目前只能用 interface{} 接受, 并且也不能用split分割
不知道怎么办了,
我在后面都写好了 switch来验证 以为返回单个字符 ,结果出现以上多个, 要分割出来才行。
~~~
看样子好像是字符串数组对象,如果类型必须是interface{},试试通过反射获取值
``` go
sliceValueObj := reflect.ValueOf(result)//通过反射拿到值对象
if sliceValueObj.Kind() == reflect.Slice {//判断是否是slice
for i:= 1;i < sliceValueObj.Len();i++ {//遍历slice
elemVlaueObj := sliceValueObj.Index(i)//index方法可以取到元素的值对象
if elemVlaueObj.Kind() == reflect.String {
fmt.Println(elemVlaueObj.String())//String方法取到字符串值,相应的还有Bool、Bytes、Int、Float等方法
}
}
}
```
#7
更多评论
~~~
<a href="/user/channel" title="@channel">@channel</a> API返回的是[class news name age] 这种类型 还是必须只能用interface{} 接收,用字符串就报错了
无奈啊, 不知道如何处理了。 这样一个条件也不满足了
type TaskTest int
const (
_ TaskTest = iota
a
b
c
)
func main() {
var ss2 TaskTest
ss2, _ = GetStatus()
fmt.Println(ss2) //结果我这里永远都是返回0 , switch永远不匹配
}
func GetStatus() (status TaskTest, err error) {
result := "b" //这个我固定了,默认是API地址 我以为返回一个字符 如a b c结果返回如:[class news name age]
//是一个 interface{} 也无法转换string
switch result {
case "a":
status = a
case "b":
status = b
case "c":
status = c
}
return status ,nil
}
~~~
#2