内嵌的结构体如何调用其外部结构体的方法?

flyinmysky · · 1631 次点击
```go package main import ( "fmt" "reflect" ) type IAnimal interface { Run() } type Animal struct{} func (a *Animal) Escape(ianimal IAnimal) { ianimal.Run() } func (a *Animal) Run() { fmt.Printf("Animal Run.\n") } type Dog struct { Animal } func (d *Dog) Run() { fmt.Printf("Dog Run.\n") } func main() { dog := &Dog{} dogv:=reflect.ValueOf(dog) dogt:=reflect.Indirect(dogv).Type() dognew:=reflect.New(dogt) dogi:=dognew.Interface().(IAnimal) dog.Escape(dogi) } ```
#6
更多评论
我记得反射的情况下,如果是一个结构实现了一个接口,可以用强制转换成接口在调用接口方法
#1
这样的想法下,你的Dog也要实现一个Escape才可能实现吧。。。
#2