如何通過反射獲取陰影方法?通過反射獲取陰影方法
在下面的代碼我使用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