На этом шаге рассмотрим использование инструкции выбора в Go.
Существуют две разновидности инструкции выбора switch: выбор по значению выражения и выбор по типу. Инструкция switch в Go не выполняет все ветки до первой инструкции break (то есть в Go не требуется завершать инструкцией break каждый раздел case). Однако имеется возможность явно потребовать "проваливаться" в следующий раздел case с помощью инструкции fallthrough.
Инструкция switch выбора по значению выражения в языке Go имеет следующий синтаксис:
switch необязательнаяИнструкция; необязательноеВыражение { case списокВыражений1: блок1 ... case списокВыраженийN: блокN default: блокD }
Точка с запятой обязательна при наличии необязательной инструкции, независимо от наличия необязательного выражения. Каждый блок состоит из нуля или более инструкций.
Если в инструкции switch отсутствует необязательное выражение, компилятор предполагает, что в качестве выражения используется значение true. Необязательная инструкция должна быть простой.
Если в необязательной инструкции объявляются переменные (например, с помощью оператора :=), их область видимости простирается от точки объявления до конца всей инструкции switch, то есть они существуют во всех блоках case и в блоке default и прекращают свое существование в конце инструкции switch.
Наибольшая эффективность инструкции switch достигается, когда инструкции case упорядочены сверху вниз от наиболее вероятных вариантов к наименее вероятным.
Раздел default является необязательным, но при его наличии он может находиться в любом месте внутри инструкции switch. Если не будет найдено совпадения ни с одним выражением в инструкциях case, будет выполнен блок default, если имеется. В противном случае управление будет передано инструкции, следующей за инструкцией switch.
В каждой инструкции case должен иметься список из одного или более выражений, разделенных запятыми, типы значений которых совпадают с типом значения необязательного выражения в инструкции switch. Если необязательное выражение отсутствует, компилятор по умолчанию использует значение true, то есть значение типа bool, и в этом случае все выражения во всех инструкциях case должны возвращать значение типа bool.
Если в блоке case или default будет встречена инструкция break, инструкция switch немедленно прервет выполнение и передаст управление следующей за ней инструкции или, если в инструкции break указано имя метки, ближайшей вмещающей инструкции for, switch или select, где определена указанная метка.
Задание 1. Реализовать пример, который выводит число, если оно не выходит за установленные границы диапазона или одно из граничных значений, которому не удовлетворяет введенное число.
Раскрыть/скрыть решение и комментарии.
Задание 2. Необходимо вывести название времени года по введенному номеру текущего месяца.
Раскрыть/скрыть решение и комментарии.
На следующем шаге рассмотрим инструкцию цикла for в Go.