Na programação orientada a objetos, o polimorfismo permite que os objetos exibam comportamentos diferentes com base em sua classe. Mas em Go, o conceito de polimorfismo não é implementado no sentido tradicional. Vamos nos aprofundar nas razões por trás disso e explorar como obter funcionalidade semelhante em Go.
Go não é uma linguagem tradicional orientada a objetos. Adota uma abordagem diferente ao usar:
Ao contrário das linguagens orientadas a objetos, Go não oferece suporte à substituição de métodos ou métodos virtuais. Isso permite que Go mantenha um nível mais alto de segurança de tipo.
Para obter um comportamento semelhante ao polimorfismo em Go, podemos empregar as seguintes técnicas:
Exemplo:
package main
import "fmt"
// Common interface
type Foo interface {
printFoo()
}
// Derived type with unique implementation
type FooImpl struct{}
func (f FooImpl) printFoo() {
fmt.Println("Print Foo Impl")
}
// Derived type composed using the common interface
type Bar struct {
FooImpl
}
// Function returning the common interface
func getFoo() Foo {
return Bar{}
}
func main() {
fmt.Println("Hello, playground")
b := getFoo()
b.printFoo()
}
Neste exemplo, Foo é a interface comum, FooImpl é o tipo derivado com sua própria implementação e Bar é um tipo derivado composto usando FooImpl. A função getFoo() retorna uma instância da interface Foo, permitindo-nos tratar diferentes tipos derivados como um tipo de interface.
Esta abordagem fornece uma forma de polimorfismo em Go, permitindo-nos tratar diferentes tipos derivados como instâncias de uma interface comum.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3