Junior — Middle
Quando na programação uma interface pode ter o valor nil ou ser indefinida?
sobes.tech IA
Resposta da IA
Em Go, uma interface pode ter o valor nil ou estar indefinida nos seguintes casos:
-
Variável de interface não inicializada Se a variável de interface for declarada, mas não tiver um valor atribuído, ela é igual a
nil. -
A interface contém um ponteiro nulo Em Go, uma interface consiste em duas partes: tipo e valor. Se o tipo estiver definido, mas o valor for um ponteiro nulo (
nil), a interface não é igual anil, embora o valor interno esteja ausente. -
Passar
nilpara a interface Se passar um valornilde um tipo específico (por exemplo,(*MyStruct)(nil)) para a interface, ela não será igual anil, pois o tipo está presente.
Exemplo:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, pois o tipo *int está presente, mas o valor é nil
if i == nil {
fmt.Println("i é nil")
} else {
fmt.Println("i não é nil")
}
É importante considerar isso ao fazer verificações contra nil para evitar falsos positivos.