Menu
Coddy logo textTech

Switch с использованием `fallthrough`

Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 1 из 68.

В Go операторы switch обычно выполняют только соответствующий case, а затем автоматически завершают выполнение. Однако ключевое слово fallthrough изменяет это поведение, принудительно продолжая выполнение в следующем case, независимо от того, соответствует ли он условию.

Когда вы используете fallthrough в конце варианта, Go выполнит код следующего варианта, не проверяя его условие. Это отличается от таких языков, как C, где нужно использовать break, чтобы предотвратить переход к следующему варианту.

grade := "B"
switch grade {
case "A":
    fmt.Println("Excellent!")
    fallthrough
case "B":
    fmt.Println("Good job!")
    fallthrough
case "C":
    fmt.Println("Keep trying!")
}

В этом примере, если grade имеет значение "B", будут выведены и "Good job!", и "Keep trying!" из-за оператора fallthrough. Это позволяет выполнить несколько связанных действий для одного совпавшего случая.

challenge icon

Задание

Легко

В этом задании ты попрактикуешься в использовании ключевого слова fallthrough в операторе switch для создания системы приоритетных оповещений. Когда срабатывает оповещение высокого приоритета, система должна последовательно отображать несколько предупреждающих сообщений.

Ты получишь строковый ввод, представляющий уровень оповещения. Создай оператор switch, который обрабатывает разные уровни оповещения и использует fallthrough для отображения каскадных сообщений для оповещений более высокого приоритета.

Вводом будет один из следующих уровней оповещения: "critical", "high", "medium" или "low".

Твой оператор switch должен работать следующим образом:

  • Для "critical": выведи "CRITICAL: System shutdown imminent!" и перейди к выводу сообщения для высокого приоритета
  • Для "high": выведи "HIGH: Immediate attention required!" и перейди к выводу сообщения для среднего приоритета
  • Для "medium": выведи "MEDIUM: Please review when possible"
  • Для "low": выведи "LOW: Informational only"

Используй ключевое слово fallthrough, чтобы critical-оповещения отображали сообщения как для критического, так и для высокого приоритета, а high-оповещения отображали сообщения как для высокого, так и для среднего приоритета.

Попробуйте сами

package main

import "fmt"

func main() {
    // Прочитать ввод
    var alertLevel string
    fmt.Scanln(&alertLevel)
    
    // TODO: Напишите ваш код ниже
    // Создайте оператор switch с fallthrough для системы оповещений
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Go