Ce dont vous avez besoin, c'est d'un outil qui puisse détecter variable shadowing
. Vous pouvez essayer go vet
comme suit
L'analyseur 'shadow' peut être construit et exécuté en utilisant ces commandes :
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
go vet -vettool=$(which shadow)
Une autre option est la configuration go vet
en golangci-lint
Activer check-shadowing
sur .golangci.yml
linters-settings:
govet:
check-shadowing: true
Fichier t.go
func main() {
a := 1
if true {
a := 2
fmt.Println(a)
}
fmt.Println(a)
}
Ensuite, exécutez golangci-lint run ./t.go
et a obtenu
t.go:8:3: shadow: declaration of "a" shadows declaration at line 6 (govet)
a := 2
^