Вопрос: Как работает область видимости (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 другой, чем снаружи.