Sobes.tech
Junior — Middle

Quando in programmazione un'interfaccia può avere il valore nil o essere indefinita?

sobes.tech AI

Risposta dell'AI

In Go, un'interfaccia può avere il valore nil o essere indefinita nei seguenti casi:

  1. Variabile di interfaccia non inizializzata Se la variabile di interfaccia viene dichiarata ma non viene assegnato un valore, è uguale a nil.

  2. L'interfaccia contiene un puntatore nullo In Go, un'interfaccia è composta da due parti: tipo e valore. Se il tipo è impostato, ma il valore è un puntatore nullo (nil), l'interfaccia non è uguale a nil, anche se il valore interno manca.

  3. Passare nil all'interfaccia Se si passa all'interfaccia un valore nil di un tipo specifico (ad esempio, (*MyStruct)(nil)), l'interfaccia non sarà uguale a nil, poiché il tipo è presente.

Esempio:

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, poiché il tipo *int è presente, ma il valore è nil

if i == nil {
    fmt.Println("i è nil")
} else {
    fmt.Println("i non è nil")
}

È importante considerare questo durante i controlli contro nil per evitare falsi positivi.