Зарегистрируйтесь, чтобы продолжить обучение

Условные конструкции Основы Go

В любой программе часто требуется выполнять разные действия в зависимости от условий. Для этого в Go, как и в большинстве языков программирования, используется конструкция if.

Базовый синтаксис

if условие {
    // код, который выполнится, если условие истинно (true)
}

Пример

age := 18

if age >= 18 {
    fmt.Println("Access granted")
}

// => Access granted

Условие else

Если нужно выполнить другой код в случае, когда условие ложно (false), добавляется блок else:

age := 14

if age >= 18 {
    fmt.Println("Access granted")
} else {
    fmt.Println("Access denied")
}

// => Access denied

Когда условий больше двух, можно использовать цепочку else if:

score := 85

if score >= 90 {
    fmt.Println("Grade: A")
} else if score >= 80 {
    fmt.Println("Grade: B")
} else {
    fmt.Println("Grade: C or lower")
}

// Grade: B

Особенности if в Go

  • В Go не ставятся круглые скобки вокруг условия.
  • Тело if обязательно должно быть в фигурных скобках {}, даже если там одна строка.
  • Условие должно быть логического типа bool. Например, такой код вызовет ошибку компиляции: go if 1 { fmt.Println("Ошибка") // non-boolean condition in if statement }

Логические выражения в условиях

В условии if можно использовать логические операторы (&&, ||, !) для составления сложных проверок:

age := 20
isRegistered := true

if age >= 18 && isRegistered {
    fmt.Println("Access granted")
}
// => Access granted

Краткая форма объявления переменной

Go позволяет объявить переменную прямо в условии if. Эта переменная будет доступна только внутри блока if и его else:

if n := len("hello"); n > 3 {
    // n существует
    fmt.Println("String is long enough:", n)
} else {
    // и здесь n существует тоже
    fmt.Println("String too short:", n)
}
// Здесь n уже не существует
// => String is long enough: 5

Отсутствие тернарного оператора

В Go, как и в Python нет тернарного оператора (?:), который встречается в других языках. Для выбора значения, используется обычный if:

age := 16
status := ""

if age >= 18 {
    status = "adult"
} else {
    status = "minor"
}

fmt.Println(status)

// => minor

Дополнительные материалы

  1. If statements

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff