Lösungen: Übungen zur Ablaufsteuerung
Sehen wir uns mögliche Lösungen für jede der Übungen an.
Schreiben eines FizzBuzz-Programms
Eine Lösung für die Übung zur Verwendung der switch
-Anweisung könnte wie folgt aussehen:
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 den FizzBuzz
-Fall, multiplizieren Sie 3 mit 5, da die Ergebnisse durch 3 und 5 teilbar sind. Sie können auch eine AND
-Bedingung einbeziehen, um zu überprüfen, ob eine Zahl durch 3 und 5 teilbar ist.
Ermitteln der Primzahlen
Eine Lösung für die Übung, die Primzahlen unter 20 zu ermitteln, könnte wie folgt aussehen:
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)
}
}
}
In der main
-Funktion durchlaufen wir eine Schleife von 1 bis 20 und rufen die Funktion findprimes
auf, um die aktuelle Zahl zu überprüfen. In der findprimes
-Funktion starten wir die for
-Schleife mit 2 und wiederholen sie, bis der Zähler größer als der Wert von number
ist. Wenn number
glatt durch den Zähler teilbar ist, ist number
nicht prim. Wenn wir die Schleife abschließen, ohne zu beenden, ist die Zahl entweder 1 oder eine Primzahl.
So sieht die Ausgabe aus:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Aufforderung zur Eingabe einer Zahl und Verwendung von „panic“ bei einer negativen Zahl
Die Lösung für die Übung zum Ausprobieren eines panic
-Aufrufs könnte wie folgt aussehen:
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)
}
}
}
Denken Sie daran, dass es darum geht, die Verwendung einer Endlosschleife und einer switch
-Anweisung zu üben.