如果我有一个结构并且我想获得它的关键,但它目前是类型interface{}
,我该怎么做?
目前我收到以下编译错误:
invalid operation: d[label] (index of type interface {})
播放:http ://play.golang.org/p/PLr91d55GX
package main
import "fmt"
import "reflect"
type Test struct {
s string
}
func main() {
test := Test{s: "blah"}
fmt.Println(getProp(test, "s"))
}
func getProp(d interface{}, label string) (interface{}, bool) {
switch reflect.TypeOf(d).Kind() {
case reflect.Struct:
_, ok := reflect.TypeOf(d).FieldByName(label)
if ok {
// errors here because interface{} doesn't have index of type
return d[label], true
} else {
return nil, false
}
}
}
我真的必须对每种不同的类型做大量的案例陈述并调用反映的reflect.ValueOf(x).String()
等吗?我希望有一种更优雅的方式。