ExpertiDict

Go · Avançado · Inglês · Técnico

typed nil

/taɪpt nɪl/substantivo

Interface que guarda um ponteiro nil de tipo concreto: a interface não é nil, porque tem tipo, apesar de o valor ser nil.

Onde usar

Bug clássico: uma função retorna um *MyErr nil como error, e 'if err != nil' dá verdadeiro. A correção é retornar o nil literal.

Em código

type MyErr struct{}
func (*MyErr) Error() string { return "x" }
func f() error {
  var e *MyErr
  return e // não é nil!
}
fmt.Println(f() == nil) // false

Exemplos

That's the typed nil trap: the error isn't nil.

Essa é a armadilha do typed nil: o erro não é nil.

Return a plain nil, not a nil pointer of your error type.

Retorne um nil simples, não um ponteiro nil do seu tipo de erro.

Cuidado

Uma interface só é nil quando tipo e valor são ambos nil; basta o tipo estar preenchido para a comparação com nil falhar.

Sinônimos

nil tipado, interface com ponteiro nil

Veja também

Todos os termos de Go