Sobes.tech
Junior — Middle

V čom spočíva rozdiel medzi prázdnym rozhraním a rozhraním s hodnotou nil v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go je prázdne rozhranie interface{} rozhranie, ktoré neobsahuje žiadne metódy a môže ukladať hodnotu akéhokoľvek typu. Avšak, keď premenná typu rozhranie obsahuje nil, je dôležité pochopiť, čo presne nil znamená.

  • Prázdne rozhranie, bez hodnoty: premenná typu rozhranie, ktorá neukazuje na žiadnu hodnotu, sa považuje za nil.
  • Rozhranie s hodnotou nil: ak rozhranie obsahuje konkrétny typ, ale hodnota tohto typu je nil, potom samotné rozhranie nie je rovné nil, pretože obsahuje informácie o type.

Príklad:

var i interface{}       // i == nil
var p *int = nil         // p == nil
i = p                   // i != nil, pretože obsahuje typ *int, ale hodnota je nil

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

Je dôležité brať toto do úvahy pri kontrole na nil, aby sa predišlo neočakávaným chybám.