我有一个界面: package pkg type BaseInterface interface { func Nifty() bool func Other1() func Other2() ... func Other34123() }和一个实现它的结构: package pkg type Impl struct {} func (Impl) Nifty() bool { ... }然后是另一个结构,它想要嵌入第一个并执行它自己的 Nifty(): package myOtherPackage import "pkg" type ImplToo struct { *pkg.Impl } func (it ImplToo) Nifty() bool { ... something else ... }这有点像在 OOP 语言中具有方法覆盖的类继承。我想知道如何做 implToo.super().Nifty() 的等价物——也就是说,从 ImplToo Nifty() 实现中,调用 pkg.Impl Nifty() 实现。什么是正确的转换,it以便我可以做到这一点?我尝试的一切都会在 ImplToo 的 Nifty() 上产生无限递归,或者一些编译器错误,例如:invalid type assertion: (&it).(BaseInterface) (non-interface type *it on left)......或者很多变化。
2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
您正在寻找;
type ImplToo struct {
pkg.Impl
}
func (it ImplToo) Nifty() bool { return it.Impl.Nifty() }
您对指针的使用不一致,这可能是(不是积极的)问题的一部分。如果你想让嵌入类型成为一个指针,那么让你的方法接收类型也是一个指针以避免这个问题。
如果要显式使用嵌入类型中的方法,请使用通常具有属性名称的类型来引用它。
- 2 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消