如何通过反射获取阴影方法?通过反射获取阴影方法
在下面的代码我使用MethodByName获得方法Test()
上B
类型,但我想获得的阴影法从b.A
Test()
为好,这样我可以叫他们两个。
package main
import (
"fmt"
"reflect"
)
type A struct {}
type B struct {
A
}
func (self *A) Test() {
fmt.Println("I'm A")
}
func (self *B) Test() {
fmt.Println("I'm B")
}
func main() {
b := &B{}
b.Test() // This one shadows b.A.Test()
b.A.Test() // but its ok to call like this
// via reflection
val := reflect.ValueOf(b)
val.MethodByName("Test").Call([]reflect.Value{})
}
代码可在这里:http://play.golang.org/p/6YPLy2dmMb
好的,谢谢!在我真正的问题中,我真的不知道A的名称,但我想我可以遍历所有字段,并调用该方法,如果它存在于该字段。 – fredrik