Lektionen des Moduls (2/5)
for: die einzige Schleife
Go hat ein einzelnes Schleifenkonstrukt: for. Nein while, nein
do-while, kein foreach (das kommt in der nächsten Lektion mit
range). Ein einziges Schlüsselwort deckt dank drei Formen alle Fälle ab.
Die drei Formen von for
Klassische Drei-Satz-Form
Identisch mit C/Java:
for i := 0; i < 5; i++ {
fmt.Println(i)
}Der Gültigkeitsbereich von i ist auf for beschränkt. Die drei Klauseln sind optional (Sie können
lassen Sie einen davon weg), aber der ; bleibt bestehen, wenn Sie einen Zwischencode weglassen.
„while“-Form: nur Bedingung
In Go ist while einfach ein for mit einem einzelnen bool-Ausdruck:
i := 0
for i < 5 {
fmt.Println(i)
i++
}Unendliche Form
Ohne Klauseln wird die Schleife nie beendet (es sei denn, break/return):
for {
if exitCondition() {
break
}
doWork()
}Es ist das Muster für Ereignisbehandlungsschleifen, Server und Wiederholungsrichtlinien.
break, continue und Etiketten
break verlässt die innerste Schleife, continue springt zur nächsten Iteration:
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // salta i pari
}
if i > 7 {
break // ferma il ciclo
}
fmt.Println(i) // 1 3 5 7
}Um verschachtelte Schleifen zu verlassen, gibt es Beschriftungen (selten, aber nützlich):
Esterno:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i*j == 4 {
break Esterno // esce da entrambi
}
}
}Kein ,-Operator wie in C
In Go können Sie for i, j := 0, 10; i < j; i, j = i+1, j-1 nicht schreiben:
Der Beitragsausdruck akzeptiert keine Mehrfachzuweisungen. Verwenden Sie Go's
Mehrfachzuweisungssyntax:
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
fmt.Println(i, j)
}Dies funktioniert stattdessen, weil i, j = i+1, j-1 ein Single ist
Mehrfachbelegung.
Probieren Sie es aus
Geben Sie die Zahlen von 0 bis einschließlich 4 mit einem klassischen Dreisatz für an.
Hinweis anzeigen
`for init; cond; post { ... }` – hier ist init `i := 0`.
Lösung nach 3 Versuchen verfügbar
Summieren Sie alle Zahlen von 1 bis einschließlich 10 unter Verwendung der „while“-Form von for zur Summe.
Hinweis anzeigen
'while'-Form: `for <condition> { ... }`.
Lösung nach 3 Versuchen verfügbar
Welche Form stellt eine Endlosschleife in Go dar?
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }Zusammenfassung
– Ein einzelnes Schlüsselwort for mit drei Formen: klassisch, while, unendlich.
break/continueoptional mit Beschriftung für verschachtelte Schleifen.- Beschriften Sie
Name:vorfor, sparsam verwenden. - Kein
,als Operator: Nutzen Sie die Mehrfachzuweisungi, j = ..., ....