Modulelessen (2/5)
voor: de enige lus
Go heeft een enkele lusconstructie: for. Nee while, nee
do-while, nee foreach (die arriveert in de volgende les met
range). Dankzij drie formulieren dekt één trefwoord alle dossiers af.
De drie vormen van for
Klassiek formulier met drie clausules
Identiek aan C/Java:
for i := 0; i < 5; i++ {
fmt.Println(i)
}i heeft een beperkte reikwijdte tot for. De drie clausules zijn optioneel (u kunt
laat er één weg), maar de ; blijven over als je een tussenliggende weglaat.
"while"-vorm: alleen voorwaarde
In Go is while gewoon een for met een enkele bool expressie:
i := 0
for i < 5 {
fmt.Println(i)
i++
}Oneindige vorm
Zonder clausules eindigt de lus nooit (tenzij break/return):
for {
if exitCondition() {
break
}
doWork()
}Het is het patroon voor gebeurtenisafhandelingslussen, servers en beleid voor opnieuw proberen.
break, continue en labels
break verlaat de binnenste lus, continue gaat naar de volgende iteratie:
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
}Om geneste lussen te verlaten zijn er labels (zeldzaam maar nuttig):
Esterno:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i*j == 4 {
break Esterno // esce da entrambi
}
}
}Geen , operator zoals in C
In Go kun je niet for i, j := 0, 10; i < j; i, j = i+1, j-1 schrijven:
de post-expressie accepteert geen meerdere toewijzingen. Gebruik Go's
syntaxis van meerdere toewijzingen:
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
fmt.Println(i, j)
}Dit werkt omdat i, j = i+1, j-1 een single is
meerdere opdracht.
Probeer het
Druk de cijfers van 0 tot en met 4 af met een klassieke drieclausule voor.
Toon hint
`voor begin; voorwaarde; post { ... }` — hier is init `i := 0`.
Oplossing beschikbaar na 3 pogingen
Tel alle getallen van 1 tot en met 10 bij elkaar op met behulp van de 'while'-vorm van for.
Toon hint
'while'-vorm: `voor <voorwaarde> { ... }`.
Oplossing beschikbaar na 3 pogingen
Welke vorm vertegenwoordigt een oneindige lus in Go?
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }Samenvatten
- Eén trefwoord
formet drie vormen: klassiek, while, oneindig. break/continueoptioneel met een label voor geneste lussen.- Label
Name:vóór defor, spaarzaam gebruikt. - Geen
,als operator: gebruik de meervoudige toewijzingi, j = ..., ....