Вопрос: Как работает область видимости (scope) и shadowing (затенение) переменных?

Go Junior Без компании
Вопрос: Как работает область видимости (scope) и shadowing (затенение) переменных?
Ответы
Переменная из внутреннего блока может затенить внешнюю с тем же именем. Это часто источник багов с :=. ```go package main import "fmt" func main() { err := "outer" if true { err := "inner" // затенение fmt.Println(err) } fmt.Println(err) } ``` Осторожно с конструкциями вида: if x, err := f(); err != nil { ... } — err внутри if другой, чем снаружи.