Golang e herança

Quero fornecer uma estrutura básica com métodos na minha biblioteca que possam ser 'estendidos'.

Os métodos dessa estrutura base dependem de métodos da estrutura de extensão. Isso não é diretamente possível no Go, porque os métodos struct só têm acesso aos próprios campos das estruturas, não às estruturas pai.

O ponto é ter uma funcionalidade que não preciso repetir em cada classe de extensão.

Eu vim com esse padrão, que funciona bem, mas parece bastante complicado devido à sua estrutura cíclica.

Eu nunca encontrei nada parecido em outro código Go. Isso é muito difícil? Que abordagem diferente eu poderia adotar?

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
}

questionAnswers(2)

yourAnswerToTheQuestion