Junior — Middle
É possível implementar um mecanismo de herança na linguagem Go?
sobes.tech IA
Resposta da IA
Na linguagem Go, não existe herança clássica, como em linguagens orientadas a objetos como Java ou C++. Em vez disso, o Go usa composição e incorporação (embedding) de estruturas para reutilizar código e expandir funcionalidades.
Por exemplo, pode-se incorporar uma estrutura em outra, e os métodos da estrutura incorporada ficarão acessíveis através da estrutura externa:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "fala")
}
type Dog struct {
Animal // incorporação da estrutura Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // chamará o método Speak da estrutura Animal
}
Dessa forma, em Go, consegue-se um comportamento semelhante à herança, mas implementado através de composição, o que promove um design mais flexível e simples.