Sobes.tech
Junior — Middle

Pode explicar o princípio de herança e como ele é implementado na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go não existe herança clássica como em outras linguagens orientadas a objetos. Em vez disso, o Go usa composição e incorporação (embedding) para reutilização de código e expansão de funcionalidades.

A incorporação permite incluir um tipo (estrutura) dentro de outro, e os métodos do tipo incorporado tornam-se acessíveis ao tipo externo, o que se assemelha à herança.

Exemplo:

type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Incorporando Animal em Dog

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Au au!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)       // Acesso ao campo Animal
    fmt.Println(dog.Speak())    // Método sobrescrito
}

Dessa forma, o Go consegue um efeito semelhante à herança por meio de composição e incorporação, evitando as complexidades de uma hierarquia clássica.