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.