Pętla danych za pomocą wyrażeń

Ukończone

Innym typowym przepływem sterowania jest pętla. Funkcja Go używa tylko jednej konstrukcji pętli i jest to pętla for . Można jednak reprezentować pętle w więcej niż jeden sposób. W tej części poznasz wzorce pętli obsługiwane przez język Go.

Podstawowa składnia pętli

Podobnie jak if instrukcje i switch instrukcje, for wyrażenia pętli nie wymagają nawiasów. Ale nawiasy klamrowe są wymagane.

Średniki (;) oddzielają trzy składniki for pętli:

  • Początkowa instrukcja wykonywana przed pierwszą iterację (opcjonalnie).
  • Wyrażenie warunku, które jest obliczane przed każdą iterację. Pętla zatrzymuje się, gdy ten warunek to false.
  • Stan po wykonaniu na końcu każdej iteracji (opcjonalnie).

Jak widać, pętla for w języku Go jest podobna do for pętli w językach programowania, takich jak C, Java i C#.

W najprostszej formie pętla for w języku Go wygląda następująco:

func main() {
    sum := 0
    for i := 1; i <= 100; i++ {
        sum += i
    }
    fmt.Println("sum of 1..100 is", sum)
}

Zobaczmy, jak można zapisywać pętle w języku Go.

Puste prestatements i poststatements

W niektórych językach programowania słowo kluczowe służy while do pisania wzorców pętli, w których wymagane jest tylko wyrażenie warunku. Go nie while ma słowa kluczowego. Można jednak użyć for pętli i skorzystać z faktu, że go sprawia, że prestatements i poststatements opcjonalne.

Użyj poniższego fragmentu kodu, aby potwierdzić, że możesz użyć for pętli bez użycia prestatements i poststatements.

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    var num int64
    rand.Seed(time.Now().Unix())
    for num != 5 {
        num = rand.Int63n(15)
        fmt.Println(num)
    }
}

Jeśli zmienna num przechowuje wartość inną niż 5, program wyświetla losową liczbę.

Pętle nieskończone i instrukcje podziału

Innym wzorcem pętli, który można napisać w języku Go, jest nieskończona pętla. W takim przypadku nie piszesz wyrażenia warunku ani prestanmentu ani stanu po jego zakończeniu. Zamiast tego zapisujesz wyjście z pętli. W przeciwnym razie logika nigdy nie zakończy działania. Aby logika zakończyła pętlę, użyj słowa kluczowego break .

Aby napisać odpowiednią pętlę nieskończoną, postępuj zgodnie for ze słowem kluczowym z nawiasami klamrowymi, w następujący sposób:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    var num int32
    sec := time.Now().Unix()
    rand.Seed(sec)

    for {
        fmt.Print("Writing inside the loop...")
        if num = rand.Int31n(10); num == 5 {
            fmt.Println("finish!")
            break
        }
        fmt.Println(num)
    }
}

Za każdym razem, gdy uruchamiasz ten kod, uzyskujesz inne dane wyjściowe.

Instrukcje Continue

W języku Go możesz użyć słowa kluczowego continue , aby pominąć bieżącą iterację pętli. Możesz użyć tego słowa kluczowego, na przykład, aby uruchomić walidację przed kontynuowaniem pętli. Możesz też użyć go podczas pisania nieskończonej pętli i poczekać, aż zasób stanie się dostępny.

W tym przykładzie użyto słowa kluczowego continue :

package main

import "fmt"

func main() {
    sum := 0
    for num := 1; num <= 100; num++ {
        if num%5 == 0 {
            continue
        }
        sum += num
    }
    fmt.Println("The sum of 1 to 100, but excluding numbers divisible by 5, is", sum)
}

Ten przykład zawiera pętlę for, która iteruje od 1 do 100, dodając bieżącą liczbę do sumy w każdej iteracji. Każda liczba dzieląca przez 5 jest pomijana w bieżącej iteracji pętli i nie jest dodawana do sumy.