Junior — Middle
¿En qué se diferencia una interfaz vacía de una interfaz con valor nil en el lenguaje de programación Go?
sobes.tech AI
Respuesta de la IA
En Go, la interfaz vacía interface{} es una interfaz que no contiene métodos y puede almacenar un valor de cualquier tipo. Sin embargo, cuando una variable de tipo interfaz contiene nil, es importante entender qué exactamente es nil.
- Interfaz vacía, sin valor: una variable de tipo interfaz que no apunta a ningún valor se considera nil.
- Interfaz con valor nil: si la interfaz contiene un tipo específico, pero el valor de ese tipo es nil, entonces la interfaz en sí no es igual a nil, ya que contiene información sobre el tipo.
Ejemplo:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, ya que contiene el tipo *int, pero el valor es nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
Es importante tener esto en cuenta al verificar contra nil para evitar errores inesperados.