Oplossingen - Oefeningen voor controlestromen
Laten we eens kijken naar mogelijke oplossingen voor elk van de oefeningen.
Een FizzBuzz-programma schrijven
Een oplossing voor het gebruik van de switch
instructie kan er ongeveer als volgt uitzien:
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))
}
}
Voor het FizzBuzz
geval vermenigvuldigt u 3 met 5 omdat de resultaten deelbaar zijn met 3 en 5. U kunt ook een AND
voorwaarde opnemen om te controleren of een getal deelbaar is door 3 en 5.
De priemgetallen zoeken
Een oplossing voor de oefening om de priemgetallen kleiner dan 20 te vinden, kan er ongeveer als volgt uitzien:
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 de main
functie herhalen we van 1 tot 20 en roepen we de findprimes
functie aan om het huidige nummer te controleren. In de findprimes
functie starten we de for
lus bij 2 en herhalen we totdat de teller meer is dan de number
waarde. Als de number
teller gelijkmatig deelbaar is, is het number
niet priem. Als we de lus voltooien zonder af te sluiten, is het getal 1 of het is priem.
Dit is de uitvoer:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Vraag een getal, paniek als negatief
De oplossing voor de oefening om een panic
oproep uit te voeren, kan er ongeveer als volgt uitzien:
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)
}
}
}
Het idee is om een oneindige lus en een switch
instructie te oefenen.