ExpertiDict

Go · Intermediário · Inglês · Técnico

shadowing

/ˈʃædoʊɪŋ/substantivo

Quando uma variável declarada num escopo interno recebe o mesmo nome de outra externa e a esconde. Com := é fácil criar sem querer.

Onde usar

Clássico com err: um 'x, err := f()' dentro de um if cria um novo err e o de fora continua nil. Revisores e o analisador shadow do vet tentam pegar isso.

Em código

var err error
if true {
  _, err := os.Open("x") // novo err
  _ = err
}
fmt.Println(err) // <nil>

Exemplos

That's shadowing, the outer err stays nil.

Isso é shadowing, o err de fora continua nil.

Careful with := inside the if, it shadows the variable.

Cuidado com := dentro do if, ele faz shadowing da variável.

Cuidado

Nem todo shadowing é bug, e 'if v, ok := ...' é comum e seguro; o problema é achar que está atribuindo à variável de fora.

Sinônimos

sombreamento

Veja também

Todos os termos de Go