package main
import (
"fmt"
)
func main() {
x := 10
if true {
x := 5 // затенение внешней переменной x
fmt.Println(x) // выводит 5
}
fmt.Println(x) // выводит 10
}
err
. Пример часто встречающегося кода в Go:value, err := someFunction()
if err != nil {
// обработка ошибки
}
// ...
value2, err := anotherFunction() // новое затенение переменной err
if err != nil {
// обработка ошибки
}
Если
:=
=
, вы создадите err
, которая «затенит» переменную err
из❕
1.
go vet -shadow ./...
2.
golangci-lint run --enable shadow
3.
shadow
:$ go get -u golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
$ go vet -vettool=$(which shadow)
Please open Telegram to view this post
VIEW IN TELEGRAM