Как работает switch в Go?

Intern
721 просмотров
AFK Offer AI

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.

Следующий вопрос

Что такое exported vs unexported?