В данном руководстве показано, как использовать оператор switch в Golang.

Содержание статьи

Оператор switch в Go

Оператор switch в Go предоставляет возможность многостороннего выполнения. Спецификатор выражения или типа сравнивается с кейсам (случаями) внутри оператора switch, чтобы определить, какую ветвь выполнить. В отличие от других языков вроде C, Java или PHP в Golang каждый кейс завершается неявным разрывом, следовательно, нам не нужно писать его явно.

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

Кейсы switch выполняются сверху вниз, останавливаясь при успехе. Операторы switch работают со значениями любого типа, не только integer.

Есть два типа операторов switch: выражения и типы. Можно использовать запятые для разделения нескольких выражений в одном случае оператора. Оператор switch без выражения является альтернативным способом выражения логики if/else.

Оператор по умолчанию default можно использовать для выполняемой ветки, когда больше ничего не подходит. Он является необязательным.

Пример использования оператора switch в Go

Далее представлен пример использования оператора switch в Go.

В данном примере мы находим текущий день недели и выводим соответствующее сообщение.

Оператор switch принимает выражение, которое соответствует дню недели.

Если день недели соответствует time.Monday, выводится сообщение "Сегодня понедельник".

Несколько выражений в операторе switch в Go

Возможно поместить несколько выражений в одном кейсе.

Пример выводит день рабочей недели или выходной день в зависимости от нескольких выражений в операторах с двумя кейсами.

Оператор switch пример с default в Go

Оператор по умолчанию можно использовать для всех значений, которые не соответствуют указанным случаям.

Пример проверяет размеры одежды. Если используется не распознаваемое значение, в терминале выводится слово «неизвестно».

Необязательный оператор при работе со switch в Go

Необязательный оператор инициализатор может предшествовать выражению switch. Инициализатор и выражение разделяются точкой с запятой.

В данном примере есть switch инициализатор и выражение. Оператор switch определяет, если значение четное или нечетное.

num := 6 является switch инициализатором, а num % 2 switch выражением.

Оператор break в Go

Go использует неявный оператор break для каждого случая. Это отличается от таких языков, как C или Java, где break необходим. Если нужно, мы также можем явно указать break.

В данном примере мы выполняем цикл через строку, которая содержит различные символы. Выводятся всё кроме пробелов.

У нас есть табуляция и символ перевода на новую строку.

Мы перебираем элементы строки с помощью range цикла for.

Если мы встречаем указанные три пробела, мы завершаем оператор switch с помощью break.

Таков результат вывода.

Оператор switch без выражения в Go

При использовании оператора switch без выражения, это фактически равно выражению switch true. Эту форму можно использовать вместо многострочных операторов if/else для сокращения кода.

В зависимости от текущего времени выводится AM или PM.

Ключевое слово fallthrough в switch

Для перехода к следующему кейсу можно использовать ключевое слово fallthrough.

Представьте, что мы переходим от остановки A к остановке Е. Мы определяем, сколько остановок впереди нас на основании видимой остановки.

Таков результат вывода.

Использование type в switch

С помощью type мы можем переключиться на тип значения интерфейса.

В данном примере выводится тип данных значения.

Для булева типа выводится "boolean".

Значение 112523652346.23463246345 принадлежит к типу float64.

В данном руководстве было рассмотрено использование оператора switch в Golang.

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!