Procházení dat pomocí výrazů
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
false
tato 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.