Menu
CoddyTech

Оператор 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 (который, в свою очередь, переходит к medium)
  • Для "high": выведи "HIGH: Immediate attention required!" и перейди к выводу сообщения о среднем приоритете
  • Для "medium": выведи "MEDIUM: Please review when possible"
  • Для "low": выведи "LOW: Informational only"

Поскольку цепочка fallthrough передаёт выполнение дальше, оповещение "critical" выводит три строки (CRITICAL, HIGH, MEDIUM), оповещение "high" выводит две (HIGH, MEDIUM), а "medium" и "low" выводят по одной строке.

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

package main

import "fmt"

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

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

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

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