见:http : //play.golang.org/p/GDCasRwYOp
我需要根据结构字段的类型做一些事情。
当字段为接口类型时,以下内容不起作用。
我想我明白为什么这不起作用。但是有没有办法做我想做的事?
package main
import (
"fmt"
"reflect"
)
type TT struct {
Foo int
}
type II interface {
Bar(int) (int, error)
}
type SS struct {
F1 TT
F2 II
}
func main() {
var rr SS
value := reflect.ValueOf(rr)
for ii := 0; ii < value.NumField(); ii++ {
fv := value.Field(ii)
xv := fv.Interface()
switch vv := xv.(type) {
default:
fmt.Printf("??: vv=%T,%v\n", vv, vv)
case TT:
fmt.Printf("TT: vv=%T,%v\n", vv, vv)
case II:
fmt.Printf("II: vv=%T,%v\n", vv, vv)
}
}
}
梦里花落0921
相关分类