Sobes.tech
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.