怎么知道结构体实现了基类的方法,通过reflect或者runtime
package main
type IT interface {
Echo()
}
type BaseA struct {
}
func (p *BaseA) Echo() {
println("Echo from BaseA")
}
type StructS struct {
BaseA
}
func (p *StructS) Echo() {
println("Echo from StructS")
}
func main() {
var e IT = &StructS{}
// 怎么知道Echo调用的是BaseA的还是StructS的, 在还没有调用的前提下??
e.Echo()
}
共 6 个回复
zero
打印出来的地址具然是一样的 。
zero
@jimmykuu
zero
这两个地址不一样,解决了,有没有更好的办法?
zero
zero
上面错了,不能区分。。。有没有真正的解决办法?
jimmykuu
什么场景造成这样的需求?另外 Go 里面其实不是继承的概念,是组合的概念,是不是换一种思考方式来实现?