Switch в Go — без fallthrough по умолчанию (в отличие от C/Java, не нужен break).
switch day {
case "Mon", "Tue", "Wed", "Thu", "Fri":
fmt.Println("рабочий день")
case "Sat", "Sun":
fmt.Println("выходной")
default:
fmt.Println("неизвестно")
}
Switch без выражения — замена цепочке if-else:
switch {
case n < 0:
fmt.Println("отрицательное")
case n == 0:
fmt.Println("ноль")
default:
fmt.Println("положительное")
}
Type switch — определение конкретного типа интерфейса:
switch v := val.(type) {
case int:
fmt.Println("int:", v)
case string:
fmt.Println("string:", v)
}
fallthrough есть, но используется редко — он безусловно переходит к следующему case.