0Pricing
Go Academy · Урок

Операторы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Операторы if и выражения инициализации
  2. Цикл for: все варианты
  3. Операторы switch в Go
  4. break, continue и метки
← Назад к Go Academy