Junior — Middle
Este posibil să implementați un mecanism de moștenire în limbajul Go?
sobes.tech AI
Răspuns de la AI
În limbajul Go nu există moștenire clasică, ca în limbajele orientate pe obiecte precum Java sau C++. În schimb, Go utilizează compoziția și embedding-ul (incorporarea) structurilor pentru reutilizarea codului și extinderea funcționalităților.
De exemplu, poți încorpora o structură într-alta, iar metodele structurii încorporate vor fi disponibile prin structura externă:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "vorbește")
}
type Dog struct {
Animal // încorporarea structurii Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // va apela metoda Speak a structurii Animal
}
Astfel, în Go se obține un comportament similar cu moștenirea, dar realizat prin compoziție, ceea ce favorizează un design mai flexibil și mai simplu.