Switch с выражениями
Часть раздела Основы путешествия по GO на Coddy — урок 40 из 109.
Давайте изучим выражения switch в Go, которые позволяют нам вычислять значение непосредственно в операторе switch.
Сначала давайте посмотрим, как использовать оператор switch с выражением, чтобы проверить, является ли число положительным, отрицательным или нулем:
num := -5
switch {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}После выполнения этого кода программа выведет на экран:
Negative numberОбратите внимание, что мы используем switch { без значения после него. Это означает, что Go будет вычислять каждое выражение case как логическое условие. Так как num равно -5, второй case num < 0 вычисляется как true, поэтому выводится "Negative number".
Мы также можем инициализировать переменную прямо в операторе switch. Давайте посмотрим, как это работает:
switch num := -5; {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}После выполнения этого кода мы получим тот же результат:
Negative numberВ этом примере мы объявили и инициализировали num непосредственно в операторе switch. Точка с запятой отделяет инициализацию от выражения switch (которое здесь пустое). Это делает наш код более компактным, сохраняя при этом ту же функциональность.
Задание
Новичокswitch в Go. Вам необходимо дополнить код, чтобы определить описание дня на основе его названия, используя оператор switch.Переменная
dayName уже определена со значением "Wednesday". Ваша задача — использовать выражение switch, чтобы установить значение переменной description в:-
"Start of the week" для Monday-
"Midweek" для Wednesday-
"Almost weekend" для Friday-
"Weekend" для Saturday или Sunday-
"Regular day" для любого другого дняШпаргалка
Выражения switch в Go позволяют вычислять условия непосредственно в операторе switch.
Используйте switch { без значения для вычисления логических выражений в каждом кейсе:
num := -5
switch {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}Вы можете инициализировать переменную непосредственно в операторе switch, используя точку с запятой для отделения инициализации от выражения switch:
switch num := -5; {
case num > 0:
fmt.Println("Positive number")
case num < 0:
fmt.Println("Negative number")
default:
fmt.Println("Zero")
}Попробуйте сами
package main
import "fmt"
func main() {
// Название дня уже определено
dayName := "Wednesday"
// Переменная для хранения описания
var description string
// TODO: Напишите оператор switch, который устанавливает описание на основе dayName
// Для Monday: "Start of the week"
// Для Wednesday: "Midweek"
// Для Friday: "Almost weekend"
// Для Saturday или Sunday: "Weekend"
// Для любого другого дня: "Regular day"
// Вывод результата
fmt.Printf("%s is %s\n", dayName, description)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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`Итоги — Принятие решений