Lösungen: Übungen zur Ablaufsteuerung

Abgeschlossen

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.