Řešení – cvičení toku řízení
Pojďme se podívat na možná řešení pro každé cvičení.
Napsání programu FizzBuzz
Řešení pro toto cvičení, které použije switch
příkaz, může vypadat přibližně takto:
package main
import (
"fmt"
"strconv"
)
func fizzbuzz(num int) string {
switch {
case num%15 == 0:
return "FizzBuzz"
case num%3 == 0:
return "Fizz"
case num%5 == 0:
return "Buzz"
}
return strconv.Itoa(num)
}
func main() {
for num := 1; num <= 100; num++ {
fmt.Println(fizzbuzz(num))
}
}
V případě FizzBuzz
vynásobíte 3 číslem 5, protože výsledky jsou dělitelné 3 a 5. Můžete také zahrnout podmínku AND
, která zkontroluje, jestli je číslo dělitelné číslem 3 a 5.
Vyhledání nábídek
Řešením tohoto cvičení by mohlo být nalezení primárních čísel menší než 20:
package main
import "fmt"
func findprimes(number int) bool {
for i := 2; i < number; i++ {
if number % i == 0 {
return false
}
}
if number > 1 {
return true
} else {
return false
}
}
func main() {
fmt.Println("Prime numbers less than 20:")
for number := 1; number <= 20; number++ {
if findprimes(number) {
fmt.Printf("%v ", number)
}
}
}
main
Ve funkci smyčce od 1 do 20 a zavoláme findprimes
funkci, která zkontroluje aktuální číslo.
findprimes
Ve funkci spustíme smyčku for
na 2 a opakujeme, dokud čítač nebude větší než number
hodnota.
number
Pokud je rovnoměrně dělitelný čítačem, number
není to hlavní. Pokud smyčku dokončíme bez ukončení, číslo je buď 1, nebo je první.
Tady je výstup:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Zeptejte se čísla, panice, pokud je negativní
Řešení cvičení, které se má pokusit o panic
volání, může vypadat přibližně takto:
package main
import "fmt"
func main() {
val := 0
for {
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
switch {
case val < 0:
panic("You entered a negative number!")
case val == 0:
fmt.Println("0 is neither negative nor positive")
default:
fmt.Println("You entered:", val)
}
}
}
Nezapomeňte, že myšlenkou je procvičit nekonečnou smyčku switch
a příkaz.