Операторы if и выражения инициализации
Условные конструкции с необязательными операторами инициализации
«Операторы if и выражения инициализации» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
if в Go
Инструкция if в Go вычисляет логическое выражение: круглые скобки не требуются, но фигурные скобки обязательны:
if x > 0 {
// positive
}else и else if
Объединяйте условия с помощью else if, а резервный вариант обрабатывайте с помощью else:
func classify(n int) string {
if n < 0 {
return "negative"
} else if n == 0 {
return "zero"
} else {
return "positive"
}
}if с оператором инициализации
Go допускает необязательный оператор инициализации перед условием — это удобно для ограничения области видимости временных переменных:
if err := doSomething(); err != nil {
// err is only in scope here
return err
}Область видимости оператора инициализации
Переменные, объявленные в операторе инициализации, видны только внутри блока if/else. Это предотвращает их утечку в окружающую функцию:
func process(id int) error {
if val, err := lookup(id); err != nil {
return err
} else {
use(val) // val is in scope here
}
return nil
}Логические выражения
Условие в Go должно иметь тип bool — неявное преобразование не выполняется:
- Допустимо:
if count != 0 - Недопустимо:
if count— ошибка компиляции в Go, в отличие от C/JavaScript - Это предотвращает распространённые ошибки на единицу и разыменование nil
Проверка nil
Проверяйте указатели nil, срезы, карты и ошибки с помощью == nil:
func greet(name *string) string {
if name == nil {
return "Hello, stranger"
}
return "Hello, " + *name
}Шаблон раннего возврата
Go настоятельно рекомендует ранние возвраты, чтобы уменьшить вложенность: «основной сценарий» остаётся у левого края:
func save(user User) error {
if user.Name == "" {
return errors.New("name required")
}
if user.Age < 0 {
return errors.New("invalid age")
}
return db.Insert(user)
}Объединение условий
Используйте && и || для объединения условий. Вычисление по короткому замыканию сохраняется: правая часть вычисляется только при необходимости:
if user != nil && user.IsActive() {
sendEmail(user)
}if и switch
Если у вас много условий для одной и той же переменной, switch обычно делает код понятнее. Используйте if, когда:
- Условия являются независимыми логическими выражениями
- Нужны операторы инициализации с проверками ошибок
- Есть только 1–2 ветви
Как избежать пирамид if-else
Глубоко вложенные блоки if-else ухудшают читаемость. Помогут следующие приёмы:
- Ранние возвраты
- Инструкции
switchдля нескольких вариантов - Разбиение логики на небольшие функции
- Защитные условия в начале функции
Быстрая проверка
В чём уникальность инструкции if в Go по сравнению с C?
Итоги: инструкции if
Инструкция if в Go мощная и лаконичная:
- Условие не заключается в круглые скобки, но фигурные скобки обязательны
- Оператор инициализации ограничивает область видимости переменных блоком if/else
- Условие должно иметь тип
bool - Предпочитайте ранние возвраты глубокой вложенности
- Используйте
&&/||с вычислением по короткому замыканию
Далее: универсальный цикл for в Go.
Часто задаваемые вопросы
Урок «Операторы if и выражения инициализации» бесплатный?
Да — полный текст урока «Операторы if и выражения инициализации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Операторы if и выражения инициализации»?
Условные конструкции с необязательными операторами инициализации Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Операторы if и выражения инициализации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Операторы if и выражения инициализации
- Цикл for: все варианты
- Операторы switch в Go
- break, continue и метки