Sobes.tech
Junior — Middle

¿Cuándo en programación puede una interfaz tener un valor nil o ser indefinida?

sobes.tech AI

Respuesta de la IA

En Go, una interfaz puede tener el valor nil o estar indefinida en los siguientes casos:

  1. Variable de interfaz no inicializada Si la variable de interfaz se declara pero no se le asigna un valor, es igual a nil.

  2. La interfaz contiene un puntero nulo La interfaz en Go consta de dos partes: tipo y valor. Si se especifica el tipo, pero el valor es un puntero nulo (nil), la interfaz no es igual a nil, aunque el valor interno esté ausente.

  3. Pasar nil a la interfaz Si se pasa a la interfaz un valor nil de un tipo específico (por ejemplo, (*MyStruct)(nil)), la interfaz no será igual a nil, ya que el tipo está presente.

Ejemplo:

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, ya que el tipo *int está presente, pero el valor es nil

if i == nil {
    fmt.Println("i es nil")
} else {
    fmt.Println("i no es nil")
}

Es importante tener esto en cuenta al hacer verificaciones contra nil para evitar falsos positivos.