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