Procházení dat pomocí výrazů

Dokončeno

Dalším běžným tokem řízení je smyčka. Go používá pouze jeden konstruktor smyčky a to je smyčka for . Smyčky ale můžete reprezentovat více než jedním způsobem. V této části se dozvíte o vzorech smyčky, které Go podporuje.

Základní syntaxe smyčky for

Podobně jako if příkazy a switch příkazy nevyžadují výrazy for smyčky závorky. Jsou ale vyžadovány složené závorky.

Středníky (;) oddělují tři komponenty for smyček:

  • Počáteční příkaz, který se spustí před první iterací (volitelné).
  • Výraz podmínky, který se vyhodnotí před každou iterací. Smyčka se zastaví, když je falsetato podmínka .
  • Poststatement, který se spustí na konci každé iterace (volitelné).

Jak vidíte, smyčka for v Go je podobná for smyčce v programovacích jazycích, jako je C, Java a C#.

V nejjednodušší podobě vypadá smyčka for v Go takto:

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

Pojďme se podívat, jak jinak můžete psát smyčky v Go.

Prázdné prestatements a poststatements

V některých programovacích jazycích použijete while klíčové slovo k zápisu vzorů smyčky, kde je vyžadován pouze výraz podmínky. Go nemá žádné while klíčové slovo. Místo toho ale můžete použít smyčku for a využít výhod faktu, že Go dělá předběžné a poststatements volitelné.

Pomocí následujícího fragmentu kódu potvrďte, že smyčku for můžete použít bez použití předběžných a poststatementů.

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)
    }
}

num Pokud proměnná obsahuje jinou hodnotu než 5, program vytiskne náhodné číslo.

Nekonečné smyčky a příkazy break

Dalším vzorem smyčky, který můžete napsat v Go, je nekonečná smyčka. V tomto případě nezapíšete výraz podmínky ani předběžné výrazy ani poststatement. Místo toho napíšete cestu mimo smyčku. Jinak logika nikdy neodejde. Pokud chcete, aby logika ukončila smyčku break , použijte klíčové slovo.

Pokud chcete napsat správnou nekonečnou smyčku, postupujte podle klíčového for slova se složenými závorkami, například takto:

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)
    }
}

Pokaždé, když tento kód spustíte, získáte jiný výstup.

Příkazy Continue

V go můžete pomocí klíčového continue slova přeskočit aktuální iteraci smyčky. Toto klíčové slovo můžete použít například ke spuštění ověření před pokračováním smyčky. Nebo ho použijte, když píšete nekonečnou smyčku a potřebujete počkat, až bude prostředek dostupný.

V tomto příkladu se continue používá klíčové slovo:

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)
}

Tento příklad obsahuje smyčku for, která iteruje od 1 do 100 a přičte aktuální číslo ke součtu v každé iteraci. Každé číslo dělitelné číslem 5 se přeskočí v aktuální iteraci smyčky a nepřičte se k součtu.