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{} 这种类型吗?
你可以用这个检查类型,必须要和结果完全一致才行,因此下面的a不能断言成[]interface{}
```go
package main
import (
"fmt"
"reflect"
)
func main() {
a := []int{1, 2, 3}
fmt.Println(reflect.TypeOf(a).String())
}
结果:
[]int
```
#5
更多评论