🟡 Средний · 2 очк. Основы синтаксиса
Что выведет: x := 1; if true { x := 2; _ = x }; fmt.Println(x)?
A 1
B 2
C Ошибка компиляции
D 0
Объяснение вопроса

Выведет 1. Оператор := внутри блока if создаёт новую переменную x, которая затеняет (shadow) внешнюю. Внешняя x остаётся равной 1 и не меняется.

x := 1
if true {
    x := 2   // новая x только внутри блока
    _ = x
}
fmt.Println(x)  // 1

Типичная ошибка с err

При обработке ошибок часто пишут if err := do(); err != nil - это правильно. Но если нужно переиспользовать уже объявленную err, используют =: err = do(), иначе создаётся затеняющая переменная.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.