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