Изучай программирование в играх

₊⊹

УСЛОВИЯ

if, else и switch в Go

Go Средний

[ IF И ELSE ]

В Go скобки вокруг условия не нужны — это сделано для краткости. Однако фигурные скобки вокруг тела обязательны, даже если в нём одна строка.

GO
hp := 30

if hp <= 0 {
    fmt.Println("Игра окончена!")
} else if hp < 50 {
    fmt.Println("Мало здоровья!")
} else {
    fmt.Println("Всё в порядке")
}
₊⊹
Нет тернарного оператора!
В Go нет конструкции a ? b : c. Всегда используй if-else — это сделано намеренно для читаемости и предсказуемости кода.

[ IF С ИНИЦИАЛИЗАТОРОМ ]

Уникальная особенность Go — возможность объявить переменную прямо в заголовке if. Такая переменная видна только внутри этого блока if-else и нигде больше.

GO
if score := calculateScore(); score > 1000 {
    fmt.Println("Рекорд!", score)
} else {
    fmt.Println("Очки:", score)
}
// score здесь уже не существует — она за пределами видимости

[ SWITCH-CASE ]

В Go switch не требует break — каждый case автоматически заканчивается после выполнения. Ключевое слово fallthrough явно продолжает выполнение в следующий case.

GO
level := 3

switch level {
case 1:
    fmt.Println("Лёгкий уровень")
case 2, 3:
    fmt.Println("Средний уровень")  // срабатывает на 2 или 3
case 4:
    fmt.Println("Сложный уровень")
default:
    fmt.Println("Неизвестный уровень")
}

[ SWITCH БЕЗ ВЫРАЖЕНИЯ ]

switch можно использовать без выражения — тогда каждый case содержит произвольное условие. Это читается как цепочка if-else, но аккуратнее.

GO
x := 42

switch {
case x < 0:
    fmt.Println("Отрицательное")
case x == 0:
    fmt.Println("Ноль")
case x > 0 && x < 100:
    fmt.Println("Положительное до 100")
default:
    fmt.Println("100 и больше")
}
₊⊹
switch без выражения — идиоматический Go
Это один из самых чистых способов писать условия в Go. Опытные Go-разработчики предпочитают его длинным цепочкам if-else if.

[ ПОПРОБУЙ САМ ]

₊⊹ ЗАДАНИЕ

Напиши switch, который получает номер урока и выводит его название:
— 1 → "Основы"
— 2 → "Переменные"
— 3 → "Операторы"
— 4 → "Условия"
— иначе → "Неизвестный урок"

[ ПОКАЗАТЬ РЕШЕНИЕ ]
package main

import "fmt"

func main() {
    lesson := 3

    switch lesson {
    case 1:
        fmt.Println("Основы")
    case 2:
        fmt.Println("Переменные")
    case 3:
        fmt.Println("Операторы")
    case 4:
        fmt.Println("Условия")
    default:
        fmt.Println("Неизвестный урок")
    }
}
◄ ВЫВОД И ФОРМАТИРОВАНИЕ ЦИКЛЫ ►