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.