Junior — Middle
Kedy môže mať rozhranie v programovaní hodnotu nil alebo byť neurčené?
sobes.tech AI
Odpoveď od AI
V jazyku Go môže mať rozhranie hodnotu nil alebo byť nedefinované v nasledujúcich prípadoch:
-
Neinitializovaná premenná rozhrania Ak je premenná rozhrania deklarovaná, ale jej nie je priradená žiadna hodnota, je rovná
nil. -
Rozhranie obsahuje nulový ukazovateľ V Go sa rozhranie skladá zo dvoch častí: typu a hodnoty. Ak je typ nastavený, ale hodnota je nulový ukazovateľ (
nil), rozhranie nie je rovnénil, hoci vnútorná hodnota chýba. -
Odovzdanie
nildo rozhrania Ak odovzdáte do rozhrania hodnotunilkonkrétneho typu (napríklad(*MyStruct)(nil)), rozhranie nebude rovnénil, pretože typ je prítomný.
Príklad:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, pretože typ *int je prítomný, ale hodnota je `nil`
if i == nil {
fmt.Println("i je nil")
} else {
fmt.Println("i nie je nil")
}
Je dôležité brať toto do úvahy pri kontrolách na nil, aby sa predišlo falošným pozitívam.