Junior — Middle
È possibile implementare un meccanismo di ereditarietà nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go non esiste un'ereditarietà classica, come nei linguaggi orientati agli oggetti come Java o C++. Al suo posto, Go utilizza la composizione e l'embedded (incorporamento) di strutture per il riutilizzo del codice e l'estensione delle funzionalità.
Ad esempio, si può incorporare una struttura in un'altra, e i metodi della struttura incorporata saranno disponibili attraverso quella esterna:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "dice")
}
type Dog struct {
Animal // incorporamento della struttura Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // chiamerà il metodo Speak della struttura Animal
}
In questo modo, in Go si ottiene un comportamento simile all'ereditarietà, ma realizzato tramite composizione, che favorisce un design più flessibile e semplice.