Решения. Упражнение по потокам управления

Завершено

Давайте рассмотрим возможные решения для каждого упражнения.

Написание программы 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.