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. Это позволяет выполнить несколько связанных действий для одного совпавшего случая.
Задание
ЛегкоВ этом задании ты попрактикуешься в использовании ключевого слова 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 для системы оповещений
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go