Direct naar de hoofdinhoud
Module 2 · Les 2 van 57/50 in de cursus~10 min
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:

Go
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:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Oneindige vorm

Zonder clausules eindigt de lus nooit (tenzij break/return):

Go
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:

Go
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):

Go
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:

Go
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

Oefening#go.m2.l2.e1
Pogingen: 0Laden…

Druk de cijfers van 0 tot en met 4 af met een klassieke drieclausule voor.

Editor laden…
Toon hint

`voor begin; voorwaarde; post { ... }` — hier is init `i := 0`.

Oplossing beschikbaar na 3 pogingen

Oefening#go.m2.l2.e2
Pogingen: 0Laden…

Tel alle getallen van 1 tot en met 10 bij elkaar op met behulp van de 'while'-vorm van for.

Editor laden…
Toon hint

'while'-vorm: `voor <voorwaarde> { ... }`.

Oplossing beschikbaar na 3 pogingen

Quiz#go.m2.l2.e3
Klaar

Welke vorm vertegenwoordigt een oneindige lus in Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
Antwoordmogelijkheden

Samenvatten

  • Eén trefwoord for met drie vormen: klassiek, while, oneindig.
  • break / continue optioneel met een label voor geneste lussen.
  • Label Name: vóór de for, spaarzaam gebruikt.
  • Geen , als operator: gebruik de meervoudige toewijzing i, j = ..., ....