Ключевое слово `fallthrough`
Часть раздела Основы путешествия по GO на Coddy — урок 42 из 109.
В Go ключевое слово fallthrough позволяет нам продолжить выполнение следующего кейса в операторе switch, даже после того, как совпадение было найдено. Давайте изучим, как это работает.
Сначала давайте создадим простой оператор switch, который использует ключевое слово fallthrough для описания числа:
num := 15
switch {
case num < 20:
fmt.Print("Less than 20 ")
fallthrough
case num > 10:
fmt.Print("Greater than 10 ")
fallthrough
case num > 0:
fmt.Print("Positive number")
}После выполнения этого кода мы увидим все три сообщения, выведенные на экран:
Less than 20 Greater than 10 Positive numberЭто происходит потому, что первый вариант совпадает (15 меньше, чем 20), и ключевое слово fallthrough заставляет Go также выполнить второй вариант. Затем второй вариант также использует fallthrough, что заставляет Go выполнить и третий вариант. Без fallthrough выполнился бы только первый подходящий вариант.
Помните, что fallthrough выполнит следующий блок case независимо от того, истинно его условие или нет. В нашем примере все условия оказываются истинными для числа 15, но следующий блок case выполнился бы, даже если бы его условие было ложным.
Задание
НовичокВ этом испытании вы попрактикуетесь в использовании ключевого слова fallthrough в операторе switch. Ключевое слово fallthrough позволяет продолжить выполнение следующего блока case даже после того, как совпадение было найдено.
У вас есть переменная, представляющая день недели. Ваша задача — добавить ключевое слово fallthrough в подходящее место, чтобы программа вывела и 'It's a weekday!', и 'Time to work!', когда значением переменной является 'Monday'.
Шпаргалка
Ключевое слово fallthrough позволяет продолжить выполнение следующего блока case в операторе switch, даже после того, как совпадение было найдено:
num := 15
switch {
case num < 20:
fmt.Print("Less than 20 ")
fallthrough
case num > 10:
fmt.Print("Greater than 10 ")
fallthrough
case num > 0:
fmt.Print("Positive number")
}Результат выполнения: Less than 20 Greater than 10 Positive number
fallthrough выполняет следующий блок case независимо от того, является ли его условие истинным или ложным.
Попробуйте сами
package main
import "fmt"
func main() {
// Переменная, представляющая день недели
day := "Monday"
// Оператор switch для проверки дня
switch day {
case "Monday":
fmt.Println("It's a weekday!")
// TODO: Добавьте ключевое слово `fallthrough` здесь, чтобы перейти к следующему case
case "Tuesday", "Wednesday", "Thursday", "Friday":
fmt.Println("Time to work!")
case "Saturday", "Sunday":
fmt.Println("It's the weekend!")
default:
fmt.Println("Invalid day!")
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений