Home Artigos Orientação a objetos e herança em Go

Orientação a objetos e herança em Go

0
1
616

Go não tem suporte à orientação a objetos típica das outras linguagens como Java ou C++. Não existem classes, apenas structs e interfaces. Sendo assim também não existe o conceito tradicional de herança. No entanto, é possível “estender” uma struct a incorporando (embedding) em outra struct. Isso é feito adicionando uma variável de instância sem nome. A struct “pai” pode chamar qualquer um dos métodos de sua struct de instância sem prefixar um nome e todas as instâncias da struct pai podem chamar os métodos “embedados”. Isso permite a extensão através da composição, ao mesmo tempo que permite a reutilização de métodos entre structs. Veja um exemplo:

package main
import (
"fmt"
)
type Animal struct{}
func (a Animal) Comer() {
fmt.Println("Comendo")
}
type MembroFamilia struct{}
func (fm MembroFamilia) Nome() {
fmt.Println("Meu nome não é Johnny")
}
type Cachorro struct {
Animal // Struct incorporada/embedada
MembroFamilia // Struct incorporada/embedada
}
func main() {
d := Cachorro{}
d.Comer() // Printa "Comendo"
d.Nome() // Printa "Meu nome não é Johnny"
}

Veja em ação aqui: https://play.golang.org/p/ukll8FI3Xk

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja Também

Validação de CPF e CNPJ em Go

Simples e direto. Funções para validar CPF e CNPJ em Go. …