Урок объясняет работу условных операторов if..else в Go: создание условий, цепочки else if, использование логических операторов, инициализацию в условии и приём раннего выхода (early return).
В этом уроке мы разберём оператор if..else, способы управления потоком выполнения, использование логических операторов, инициализацию переменных внутри условия и технику раннего выхода (early return).
Обычно программа выполняется сверху вниз, строка за строкой. Flow control позволяет изменить порядок выполнения и выполнять определённые блоки кода только при выполнении условий.
if condition {
// выполнить действие
}
if condition {
// выполнить действие
} else {
// выполнить альтернативное действие
}
if userName != "" {
// обработать имя пользователя
} else {
// вывести сообщение об ошибке
}
Если альтернативное действие не требуется:
if userName != "" {
// обработать имя пользователя
}
if age >= 21 {
// вход разрешён
} else if parentalApproval {
// вход разрешён при согласии родителей
} else {
// вход запрещён
}
Условия можно объединять с помощью операторов &&, || и !:
if hasTicket && ticketValid {
// разрешить вход
}
if funds > cost && accountActive {
// разрешить покупку
}
if usingDebitCard || usingCreditCard {
// выбрать экран карты
}
if !quizComplete {
// вывод предупреждения
}
В условия можно помещать результаты работы функций:
if temperature("freezer") > 0 {
// вывести предупреждение
}
if temp("freezer") > preferredTemp("freezer") {
// вывести предупреждение
}
В Go можно объявить переменную прямо внутри условия if.
Она будет доступна только в пределах блока if/else:
if i := 5; i < 10 {
// используем i
} else {
// используем i по-другому
}
Пример с функцией:
if rank := getUserRank(); rank == "admin" {
// код администратора
} else if rank == "manager" {
// код менеджера
} else {
// сообщение об ошибке
}
Техника раннего выхода улучшает читаемость и исключает лишнюю вложенность:
token, err := getSession("alice")
if err != nil {
return
}
cart, err := getCart(token)
if err != nil {
return
}
// теперь можно обрабатывать корзину
Early return помогает: - завершить работу функции сразу при ошибке, - сократить вложенные блоки, - улучшить понимание и поддержку кода.