Решения. Упражнение по потокам управления
Давайте рассмотрим возможные решения для каждого упражнения.
Написание программы FizzBuzz
Решение для упражнения по использованию оператора switch
может выглядеть так:
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))
}
}
При выводе FizzBuzz
вы умножаете 3 на 5, поскольку результаты делятся на 3 и 5. Чтобы проверить, делится ли число на 3 и 5, можно также добавить условие AND
.
Поиск простых чисел
Решение упражнения по поиску простых чисел меньше 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
мы выполняем цикл перебора чисел от 1 до 20 и вызываем функцию findprimes
для проверки текущего числа. В функции findprimes
мы начинаем цикл for
с числа 2 и повторяем до тех пор, пока значение счетчика не станет больше number
. Если number
делится нацело на значение счетчика, то number
не является простым. Если мы завершаем цикл без выхода, число равно 1 или просто.
Появятся следующие выходные данные.
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Запрос числа, вывод критической ошибки при отрицательном числе
Решение упражнения на попытку вызова panic
может выглядеть так:
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)
}
}
}
Помните, что идея состоит в том, чтобы попрактиковаться в использовании бесконечного цикла и оператора switch
.