Menu
Coddy logo textTech

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

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

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

Когда вы используете fallthrough в конце case, Go выполнит код следующего case без проверки его условия. Это отличается от таких языков, как 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. Это позволяет выполнять несколько связанных действий для одного совпадающего случая.

quiz iconПроверьте себя

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

quiz iconПроверьте себя

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

quiz iconПроверьте себя

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

challenge icon

Задание

Легко

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

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

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

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

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

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

Шпаргалка

Ключевое слово fallthrough в операторах switch в Go принудительно продолжает выполнение следующего кейса без проверки его условия:

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. В отличие от таких языков, как C, операторы switch в Go автоматически завершаются после выполнения подходящего кейса, если не используется fallthrough.

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

package main

import "fmt"

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

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

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