Sobes.tech
Middle

Como usar estruturas embutidas para simular herança em Go?

sobes.tech IA

Resposta da IA

No Go não há herança clássica como em linguagens orientadas a objetos, mas é possível usar estruturas embutidas (embedding) para imitar a herança. Isso é feito incluindo uma estrutura dentro de outra sem especificar o nome do campo, o que permite "herdar" os métodos da estrutura embutida.

Exemplo:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "fala")
}

type Dog struct {
    Animal // estrutura embutida
    Breed string
}

func main() {
    d := Dog{
        Animal: Animal{Name: "Bobby"},
        Breed:  "Pastor alemão",
    }
    d.Speak() // chamada ao método Animal via Dog
}

Dessa forma, Dog "herda" os métodos de Animal e pode usá-los diretamente.