英文:
Checking types of slices in golang
问题
我使用reflect包来检查变量的类型。例如,如果我想检查var是否为整数,我可以这样做:
reflect.TypeOf(var).Kind == reflect.Int
那么,我如何检查变量是否为int或float切片呢?
我只能看到Slice作为Kind()返回的类型之一,但是这个切片可以是任何类型。
英文:
I use the reflect package to check the type of my variables. For example if I want to check if var is an integer I do:
reflect.TypeOf(var).Kind == reflect.Int
How can I check if my variable is an int or float slice?
I can only see Slice as one of the types returned by Kind() but this slice could be of any type
答案1
得分: 9
如果类型是切片(slice),Elem()
将返回底层类型:
func main() {
foo := []int{1,2,3}
fmt.Println(reflect.TypeOf(foo).Elem()) //输出 "int"
fmt.Println(reflect.TypeOf(foo).Elem().Kind() == reflect.Int) //true!
}
当然,在使用之前最好检查它是否是切片类型。
英文:
If a type is slice,Elem()
will return the underlying type:
func main() {
foo := []int{1,2,3}
fmt.Println(reflect.TypeOf(foo).Elem()) //prints "int"
fmt.Println(reflect.TypeOf(foo).Elem().Kind() == reflect.Int) //true!
}
You better check that it's a slice before, of course.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论