Aufgaben-Python/courses/go/05_structs_und_methoden/README.md

34 lines
1.5 KiB
Markdown

# Go 05: Structs & Methoden 🏗️
Willkommen zu **Modul 05** des Go (Golang) Kurses!
In diesem Modul lernst du, wie Go Datenstrukturen und Verhalten ohne traditionelle Klassen kapselt: Struct-Definitionen, Konstruktoren, Value-Receiver vs. Pointer-Receiver und Struct Embedding.
---
## 💡 1. Das Wichtigste in Kürze
### Structs & Konstruktor-Pattern
In Go deklarierst du Typen mit `type Name struct`. Konstruktoren werden als Funktionen nach dem Schema `NewName(...) *Name` realisiert.
### Value- vs. Pointer-Receiver
- **Value-Receiver (`func (u User) Info()`)**: Arbeitet auf einer Kopie. Das Original-Struct im Speicher wird nicht berührt.
- **Pointer-Receiver (`func (u *User) SetEmail(e string)`)**: Erhält die Speicheradresse des Objekts. Änderungen sind persistent.
### Struct Embedding (Komposition)
Felder und Methoden eines anonym eingebetteten Structs stehen dem übergeordneten Struct automatisch zur Verfügung:
```go
type Admin struct {
User
Superpower string
}
```
---
## 🎯 Teilziele in `aufgabe.go`
1. **TODO 1:** Struct `User` (ID int, Username string, Email string, Active bool) und Konstruktor `NewUser(...) *User` erstellen.
2. **TODO 2:** Value-Receiver Methode `(u User) Info() string` implementieren.
3. **TODO 3:** Pointer-Receiver Methoden `(u *User) Deactivate()` und `(u *User) UpdateEmail(newEmail string)` schreiben.
4. **TODO 4:** Struct `AdminUser` mit eingebettetem `User` und `(a *AdminUser) Permissions() []string` umsetzen.