假设您有一个接受的函数t interface{}
。如果确定t
是一个切片,我该怎么做range
在那片上?
func main() {
data := []string{"one","two","three"}
test(data)
moredata := []int{1,2,3}
test(data)
}
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
// how do I iterate here?
for _,value := range t {
fmt.Println(value)
}
}
}
去游乐场示例:http://play.golang.org/p/DNldAlNShB
嗯,我用过reflect.ValueOf
然后如果它是一个切片你可以调用Len()
and Index()
关于获得的值len
索引处的切片和元素。我认为您无法使用范围操作来执行此操作。
package main
import "fmt"
import "reflect"
func main() {
data := []string{"one","two","three"}
test(data)
moredata := []int{1,2,3}
test(moredata)
}
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
s := reflect.ValueOf(t)
for i := 0; i < s.Len(); i++ {
fmt.Println(s.Index(i))
}
}
}
去游乐场示例:http://play.golang.org/p/gQhCTiwPAq
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)