Lösningar – Kontrollflödesövningar
Nu ska vi titta på möjliga lösningar för var och en av övningarna.
Skriva ett FizzBuzz-program
En lösning för övningen att använda -instruktionen switch
kan vara ungefär så här:
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))
}
}
För fallet FizzBuzz
multiplicerar du 3 med 5 eftersom resultaten är delbara med 3 och 5. Du kan också inkludera ett AND
villkor för att kontrollera om ett tal är delbart med 3 och 5.
Hitta primtalen
En lösning på övningen för att hitta de primära talen som är mindre än 20 kan vara ungefär så här:
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
I funktionen loopar vi från 1 till 20 och anropar findprimes
funktionen för att kontrollera det aktuella talet.
findprimes
I funktionen startar vi loopen for
vid 2 och upprepar tills räknaren är mer än number
värdet.
number
Om är jämnt delbar av räknaren, number
är inte prime. Om vi slutför loopen utan att avsluta är talet antingen 1 eller primärt.
Så här ser utdata ut:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Fråga ett tal, panik om det är negativt
Lösningen på övningen för att prova ett panic
anrop kan vara ungefär så här:
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)
}
}
}
Kom ihåg att tanken är att öva en oändlig loop och en switch
instruktion.