我想在我的库中提供一个可以“扩展”的方法的基本结构。
此基础结构的方法依赖于来自扩展结构的方法。这在 Go 中是不可能直接实现的,因为结构体方法只能访问结构体自己的字段,而不是父结构体。
重点是具有我不必在每个扩展类中重复的功能。
我想出了这个模式,它工作得很好,但由于它的循环结构看起来很复杂。
我从未在其他 Go 代码中找到类似的东西。这是非常不走的吗?我可以采取什么不同的方法?
type MyInterface interface {
SomeMethod(string)
OtherMethod(string)
}
type Base struct{
B MyInterface
}
func (b *Base) SomeMethod(x string) {
b.B.OtherMethod(x)
}
type Extender struct {
Base
}
func (b *Extender) OtherMethod(x string) {
// Do something...
}
func NewExtender() *Extender {
e := Extender{}
e.Base.B = &e
return &e
}
qq_笑_17
相关分类