Junior — Middle
Puoi spiegare il principio di ereditarietà e come viene implementato nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go non esiste un'ereditarietà classica come in altri linguaggi orientati agli oggetti. Al suo posto, Go utilizza composizione e embedding per il riutilizzo del codice e l'estensione delle funzionalità.
L'embedding permette di includere un tipo (struttura) all'interno di un altro, e i metodi del tipo incorporato diventano accessibili dal tipo esterno, somigliando a un'ereditarietà.
Esempio:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Incorporiamo Animal in Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Bau!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Accesso al campo Animal
fmt.Println(dog.Speak()) // Metodo sovrascritto
}
In questo modo, Go ottiene un effetto simile all'ereditarietà tramite composizione e embedding, evitando le complessità di una gerarchia classica.