⚡ Go Kontrollfluss

Go 03: Kontrollfluss, Schleifen & Verzweigungen

Erlerne die kompromisslos minimalistische Kontrollfluss-Philosophie von Go: Die universelle for-Schleife, range-Iteratoren, if mit Initialisierung und typensichere switch-Konstrukte.

🔄 1. Die einzige Schleife in Go: for

Go verzichtet bewusst auf while und do-while. Das Schlüsselwort for deckt alle 4 Schleifenformen ab:

// 1. Klassischer 3-Komponenten-Loop:
for i := 0; i < 5; i++ {
    fmt.Println("Index:", i)
}

// 2. While-Äquivalent (Bedingungsschleife):
aktiveVerbindungen := 10
for aktiveVerbindungen > 0 {
    aktiveVerbindungen--
}

// 3. Endlosschleife (z.B. Event-Loop / Polling):
for {
    // break oder return zum Verlassen
    break
}

// 4. Iteration über Slices & Maps mit range:
cluster := []string{"node-a", "node-b"}
for index, node := range cluster {
    fmt.Printf("[%d] -> %s\n", index, node)
}
🏢 Didaktische Analogie: Das Schweizer Taschenmesser

Statt 5 verschiedenen Spezialzangen für jede Schraube gibt dir Go ein einziges, perfekt kalibriertes Werkzeug: for. Egal ob du zählst, auf ein Signal wartest oder eine Map durchläufst – das mentale Modell bleibt immer identisch und fehlerfrei.

🛡️ 2. if mit Initialisierungs-Statement (Scope-Einschränkung)

Go erlaubt es, direkt vor der Bedingung eine Variable zu deklarieren. Deren Gültigkeitsbereich (Scope) ist strikt auf den if/else-Block beschränkt:

// Variable 'err' existiert nur innerhalb von if und else!
if err := executeTask(); err != nil {
    fmt.Println("Fehler aufgetreten:", err)
    return
}
// Außerhalb ist 'err' nicht mehr existent – kein Scope-Pollution!

🔀 3. Leistungsfähiges switch ohne Break-Falle

In Go bricht jeder case automatisch ab – kein gefürchteter Fallthrough wie in C oder Java! Außerdem können Bedingungen direkt ausgewertet werden:

status := 404

switch status {
case 200, 201:
    fmt.Println("Erfolg")
case 400, 401, 404:
    fmt.Println("Client-Fehler")
case 500, 502:
    fmt.Println("Server-Fehler")
default:
    fmt.Println("Unbekannter Statuscode")
}

// Tagless switch (Ersatz für lange if-else Ketten):
switch {
case alter < 18:
    fmt.Println("Minderjährig")
case alter >= 67:
    fmt.Println("Ruhestand")
default:
    fmt.Println("Erwerbstätig")
}

🎯 Aufgaben & Checkliste in aufgabe.go

💻 In Web-IDE öffnen → Weiter zu Go 04 →