switch
Существуют две разновидности инструкции выбора switch
: выбор по значению выражения и выбор по типу. Инструкция switch
в Go не выполняет все ветки до первой инструкции break
(как в других языках; то есть в Go не требуется завершать инструкцией break
каждый раздел case
). Однако имеется возможность явно потребовать "проваливаться" в следующий раздел case
с помощью инструкции fallthrough
.
Выбор по значению выражения
switch необязательнаяИнструкция; необязательноеВыражение { // по умолчанию необязательноеВыражение = true
case списокВыражений1: блок1 // списокВыражений разделяется запятыми
...
case списокВыраженийN: блокN // тип списокВыражений должен совпадать с необязательноеВыражение
default: блокD
}
Выбор по типу
switch необязательнаяИнструкция; переключательТипа {
case списокТипов1: блок1
...
case списокТиповN: блокN
default: блокD
}
Служит для приведения типов чаще.
switch true
Это аналог (лучший) написанию длинных цепочек if-then-else:
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Good morning!")
case t.Hour() < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}
Last updated