Przejdź do głównej treści
eLearner.app
Moduł 2 · Lekcja 2 z 57/50 w kursie~10 min
Lekcje modułu (2/5)

for: jedyna pętla

Go ma konstrukcję pojedynczej pętli: for. Nie while, nie do-while, brak foreach (który pojawi się w następnej lekcji z KODEF4). Jedno słowo kluczowe obejmuje wszystkie przypadki dzięki trzem formom.

Trzy formy for

Klasyczna forma z trzema klauzulami

Identyczny z C/Java:

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

i ma zakres ograniczony do for. Trzy klauzule są opcjonalne (możesz pomiń którykolwiek z nich), ale ; pozostanie, jeśli pominiesz pośredni.

Formularz „while”: tylko warunek

W Go while jest po prostu for z pojedynczym wyrażeniem bool:

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

Nieskończona forma

Bez klauzul pętla nigdy się nie kończy (chyba że break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

Jest to wzór dla pętli obsługi zdarzeń, serwerów i zasad ponawiania prób.

break, continue i etykiety

break opuszcza najbardziej wewnętrzną pętlę, continue przechodzi do następnej iteracji:

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
}

Aby wyjść z zagnieżdżonych pętli, dostępne są etykiety (rzadkie, ale przydatne):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

Brak operatora , jak w C

W Go nie możesz napisać for i, j := 0, 10; i < j; i, j = i+1, j-1: wyrażenie post nie akceptuje wielu przypisań. Użyj Go Składnia wielokrotnego przypisania:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

Zamiast tego działa, ponieważ i, j = i+1, j-1 jest pojedynczy wielokrotne zadanie.

Spróbuj

Ćwiczenie#go.m2.l2.e1
Próby: 0Ładowanie...

Wydrukuj liczby od 0 do 4 włącznie z klasycznym trzema klauzulami for.

Ładowanie edytora...
Pokaż wskazówkę

`for init; cond; post { ... }` — tutaj init to `i := 0`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#go.m2.l2.e2
Próby: 0Ładowanie...

Zsumuj wszystkie liczby od 1 do 10 włącznie, używając formy „while” for.

Ładowanie edytora...
Pokaż wskazówkę

forma „podczas”: `for <condition> { ... }`.

Rozwiązanie dostępne po 3 próbach

Quiz#go.m2.l2.e3
Gotowe

Która forma reprezentuje nieskończoną pętlę w Go?

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

Podsumowanie

  • Pojedyncze słowo kluczowe for w trzech postaciach: klasyczna, podczas gdy, nieskończona.
  • break / continue opcjonalnie z etykietą dla zagnieżdżonych pętli.
  • Etykieta Name: przed for, używana oszczędnie.
  • Brak operatora ,: użyj przypisania wielokrotnego i, j = ..., ....