Menu
Coddy logo textTech

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, второе условие 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 (которое здесь пустое). Это делает наш код более компактным, сохраняя ту же функциональность.

challenge icon

Задание

Новичок
В этом задании ты потренируешься использовать простое выражение switch в Go. Тебе нужно завершить код, чтобы определить описание дня на основе его названия с помощью оператора switch.

Переменная dayName уже определена со значением "Wednesday". Твоя задача — использовать выражение switch, чтобы присвоить переменной description следующие значения:
- "Start of the week" для Monday
- "Midweek" для Wednesday
- "Almost weekend" для Friday
- "Weekend" для Saturday или Sunday
- "Regular day" для любого другого дня

Попробуйте сами

package main

import "fmt"

func main() {
	// Название дня уже определено
	dayName := "Wednesday"
	
	// Переменная для хранения описания
	var description string
	
	// TODO: Напишите оператор switch, который устанавливает description на основе dayName
	// Для понедельника: "Start of the week"
	// Для среды: "Midweek"
	// Для пятницы: "Almost weekend"
	// Для субботы или воскресенья: "Weekend"
	// Для любого другого дня: "Regular day"
	
	
	// Выведите результат
	fmt.Printf("%s is %s\n", dayName, description)
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Go