🔀 if..else в Go
В этом уроке мы разберём оператор if..else, способы управления потоком выполнения, использование логических операторов, инициализацию переменных внутри условия и технику раннего выхода (early return).
📌 Что такое Flow Control?
Обычно программа выполняется сверху вниз, строка за строкой. Flow control позволяет изменить порядок выполнения и выполнять определённые блоки кода только при выполнении условий.
🔧 Базовый синтаксис if..else
if condition {
// выполнить действие
}
if condition {
// выполнить действие
} else {
// выполнить альтернативное действие
}
🧪 Пример if..else
if userName != "" {
// обработать имя пользователя
} else {
// вывести сообщение об ошибке
}
Если альтернативное действие не требуется:
if userName != "" {
// обработать имя пользователя
}
🔁 Цепочка условий: if..else if
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") {
// вывести предупреждение
}
🛠 Инициализация внутри условия (Statement Initialization)
В Go можно объявить переменную прямо внутри условия if.
Она будет доступна только в пределах блока if/else:
if i := 5; i < 10 {
// используем i
} else {
// используем i по-другому
}
Пример с функцией:
if rank := getUserRank(); rank == "admin" {
// код администратора
} else if rank == "manager" {
// код менеджера
} else {
// сообщение об ошибке
}
⚡ Early Return (Ранний выход)
Техника раннего выхода улучшает читаемость и исключает лишнюю вложенность:
token, err := getSession("alice")
if err != nil {
return
}
cart, err := getCart(token)
if err != nil {
return
}
// теперь можно обрабатывать корзину
Early return помогает: - завершить работу функции сразу при ошибке, - сократить вложенные блоки, - улучшить понимание и поддержку кода.
📘 Итоги
- Flow control позволяет управлять порядком выполнения.
- if..else - основной инструмент для ветвления.
- Можно использовать логические операторы для сложных условий.
- Условия могут использовать возвращаемые функциями значения.
- Statement initialization создаёт переменные внутри условного блока.
- else if позволяет проверять несколько сценариев.
- Early return делает код проще и эффективнее.