Switch с использованием `fallthrough`
Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 1 из 68.
В Go операторы switch обычно выполняют только подходящий вариант (case) и затем автоматически завершаются. Однако ключевое слово 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. Это позволяет выполнять несколько связанных действий для одного совпадающего варианта.
Задание
ЛегкоВ этом испытании вы попрактикуетесь в использовании ключевого слова 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, чтобы при критических оповещениях выводились как критические, так и высокоприоритетные сообщения, а при высоких оповещениях — как высокоприоритетные, так и среднеприоритетные сообщения.
Попробуйте сами
package main
import "fmt"
func main() {
// Чтение входных данных
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Напишите свой код ниже
// Создайте оператор `switch` с использованием `fallthrough` для системы оповещения
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведение