Middle
Wie kann man eingebettete Strukturen in Go verwenden, um Vererbung zu imitieren? Was bringt das und wofür wird es verwendet?
sobes.tech KI
Antwort von AI
In Go gibt es keine klassische Vererbung wie in objektorientierten Sprachen, aber eingebaute Strukturen (Embedding) ermöglichen eine Nachahmung.
Wenn eine Struktur eine andere als Feld ohne Namen einschließt, werden die Methoden der eingebetteten Struktur für die äußere Struktur zugänglich, was einer Vererbung ähnelt.
Dies bietet:
- Wiederverwendung von Code
- Komposition statt Vererbung
- Die Möglichkeit, das Verhalten der eingebetteten Struktur zu erweitern
Beispiel:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Embedding von Animal in Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // Zugriff auf das Animal-Feld
fmt.Println(d.Speak()) // Aufruf der überschriebenen Methode
}
Wird verwendet, um komplexere Typen auf Basis einfacher Typen zu erstellen, ohne eine starre Klassenhierarchie.