Sobes.tech
Junior — Middle

Care este diferența dintre o interfață goală și o interfață cu valoarea nil în limbajul de programare Go?

sobes.tech AI

Răspuns de la AI

În Go, interfața goală interface{} este o interfață care nu conține metode și poate stoca o valoare de orice tip. Cu toate acestea, atunci când o variabilă de tip interfață conține nil, este important să înțelegem exact ce reprezintă nil.

  • Interfață goală, fără valoare: o variabilă de tip interfață care nu indică nicio valoare este considerată nil.
  • Interfață cu valoare nil: dacă interfața conține un tip specific, dar valoarea acelui tip este nil, atunci interfața în sine nu este egală cu nil, deoarece conține informații despre tip.

Exemplu:

var i interface{}       // i == nil
var p *int = nil         // p == nil
i = p                   // i != nil, deoarece conține tipul *int, dar valoarea este nil

fmt.Println(i == nil)   // false
fmt.Println(p == nil)   // true

Este important să ținem cont de acest aspect la verificarea pentru nil pentru a evita erori neașteptate.