Sobes.tech
Junior — Middle

Când în programare o interfață poate avea valoarea nil sau poate fi nedefinită?

sobes.tech AI

Răspuns de la AI

În Go, o interfață poate avea valoarea nil sau poate fi nedefinită în următoarele cazuri:

  1. Variabilă de interfață neinițializată Dacă variabila de interfață este declarată, dar nu i s-a atribuit nicio valoare, ea este egală cu nil.

  2. Interfața conține un pointer nul În Go, o interfață constă din două părți: tipul și valoarea. Dacă tipul este specificat, dar valoarea este un pointer nul (nil), interfața nu este egală cu nil, chiar dacă valoarea internă lipsește.

  3. Transmiterea nil în interfață Dacă se transmite în interfață o valoare nil a unui anumit tip (de exemplu, (*MyStruct)(nil)), interfața nu va fi egală cu nil, deoarece tipul este prezent.

Exemplu:

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, deoarece tipul *int este prezent, dar valoarea este `nil`

if i == nil {
    fmt.Println("i este nil")
} else {
    fmt.Println("i nu este nil")
}

Este important să țineți cont de acest lucru la verificările pentru nil pentru a evita rezultate false pozitive.