Голанг и наследство

Я хочу предоставить базовую структуру с методами в моей библиотеке, которые могут быть «расширены».

Методы этой базовой структуры полагаются на методы из расширяющейся структуры. Это не возможно напрямую в 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
}

Ответы на вопрос(2)

Ваш ответ на вопрос