Junior — Middle
Qual é a diferença entre uma interface vazia e uma interface com valor nil na linguagem de programação Go?
sobes.tech IA
Resposta da IA
No Go, a interface vazia interface{} é uma interface que não contém métodos e pode armazenar um valor de qualquer tipo. No entanto, quando uma variável de tipo interface contém nil, é importante entender exatamente o que é nil.
- Interface vazia, sem valor: uma variável de tipo interface que não aponta para nenhum valor é considerada nil.
- Interface com valor nil: se a interface contém um tipo específico, mas o valor desse tipo é nil, então a própria interface não é igual a nil, pois contém informações sobre o tipo.
Exemplo:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, pois contém o tipo *int, mas o valor é nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
É importante considerar isso ao verificar por nil para evitar erros inesperados.