package main
import "fmt"
func check_value(x interface{}) {
if _, ok := x.([]interface{}); ok {
fmt.Println("arg is slice")
} else {
fmt.Println("arg is not slice")
}
}
func main() {
var x interface{}
x = []int{1, 2}
check_value(x)
}
以上代码会输出: arg is not slice
为什么不能得到正确的结果, 类型断言难道不能断言 []interface{} 这种类型吗?
不需要啊,直接转换成`[]int`就可以。
```
func check_value(x interface{}) {
nums, ok := x.([]int)
if !ok {
panic("arg is not []int")
}
for _, num := range nums {
// ...
}
}
```
#3
更多评论