Язык Go — кратко. Часть 3. Циклы, условия, ветвление

Циклы

Бесконечный

Цикл пока условие выполняется:

Классический цикл со счётчиком:

Цикл по элементам (массива, среза, мапы, по рунам в строке…):

Прерывание цикла — break, переход к следующей итерации — continue.

Условия

Условие должно быть выражением типа bool. Это вместе с «несовместимостью» типов означает, что нельзя сделать так

x — целое, а не логическое. Потому надо писать полное условие вроде x != 0.

Естественно, else-часть является не обязательной. Ну и не забываем о небольших «хитростях», делающих код короче. Вроде этой

Ветвление

Есть три варианта switch:

  • классический
  • на условиях (альтернатива куче if’ов)
  • по типу

Классический:

Использовать break в конце каждого блока не нужно — автоперехода в следующий блок не происходит (в отличие от С, Java, PHP и т.п.). Если нам всё же нужно перейти в следующий блок, то в конце покидаемого блока ставим fallthrough.

Если наш switch находится внутри цикла и выйти надо из цикла (прервать его), делается это через метку:

На условиях:

Надо не забывать две вещи. Во-первых, это частный случай классического свитча. В качестве выражения выступает неявное указание true, как если бы мы явно указали switch true. Во-вторых, сработает первый кейс, условие которого выдаст true. То есть, если в примере выше х больше 20 и имя «Вася», то сработает кейс только для имени.

По типу:

Такое ветвление считается нежелательным и надо стараться использовать его только там, где это необходимо. В прочих случаях стараемся обходиться ООП с go-шной утиной типизацией.

default-часть в свитчах не является обязательной и может находиться не только в конце блока, но и в начале.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *