Wie ist das objektorientierte Modell in Go aufgebaut?
sobes.tech KI
Antwort von AI
In Go gibt es kein traditionelles objektorientiertes Modell mit einer tiefen Klassen-Hierarchie. Stattdessen werden verwendet:
-
Structs: Definieren Datenfelder, ähnlich wie Klassen ohne Methoden.
type Person struct { Name string Age int } -
Methoden: Funktionen, die an eine bestimmte Struktur gebunden sind. Sie werden getrennt von der Struktur definiert.
func (p Person) Greet() string { return "Hallo, mein Name ist " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Methoden mit Wert-Receiver (z.B.
(p Person)) arbeiten mit einer Kopie der Struktur. - Methoden mit Zeiger-Receiver (z.B.
(p *Person)) arbeiten mit dem Original, was Änderungen an den Feldern ermöglicht.
- Methoden mit Wert-Receiver (z.B.
-
Interfaces: Mengen von Methodensignaturen. Typen, die alle Methoden eines Interfaces implementieren, erfüllen dieses implizit. Das ist die Grundlage des Polymorphismus in Go.
type Greeter interface { Greet() string } // Person implementiert implizit Greeter -
Komposition (Eingebettete Strukturen): Anstelle von Vererbung kann eine Struktur eine andere Struktur einbetten, um auf deren Felder und Methoden zuzugreifen.
type Employee struct { Person // Eingebettete Struktur ID string } func (e Employee) GetID() string { return e.ID }Eingebettete Felder und Methoden sind direkt zugänglich:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // Zugriff auf das Feld Name über die eingebettete Person fmt.Println(e.Greet()) // Aufruf der Methode Greet über die eingebettete Person fmt.Println(e.GetID()) // Aufruf der Methode Employee
Das objektorientierte Modell in Go basiert also auf der Komposition von Strukturen und dem Verhalten, das durch Interfaces definiert wird, und nicht auf einer klassischen Klassen-Hierarchie.