Sobes.tech
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.