Sobes.tech
Junior — Middle

Como é que a mecânica de polimorfismo é implementada na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, o polimorfismo é implementado através de interfaces. A interface descreve um conjunto de métodos, e qualquer tipo que implemente esses métodos satisfaz automaticamente a interface.

Isto permite escrever funções e métodos que funcionam com diferentes tipos, desde que eles implementem a interface necessária.

Exemplo:

package main
import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}
func (d Dog) Speak() string {
    return "Au"
}

type Cat struct {}
func (c Cat) Speak() string {
    return "Miau"
}

func MakeSpeak(s Speaker) {
    fmt.Println(s.Speak())
}

func main() {
    dog := Dog{}
    cat := Cat{}
    MakeSpeak(dog) // saída: Au
    MakeSpeak(cat) // saída: Miau
}

Dessa forma, o polimorfismo em Go é alcançado através de interfaces e ligação dinâmica de métodos em tempo de execução.