Junior — Middle
Mikor lehet egy interfész értéke nil vagy undefined a programozásban?
sobes.tech MI
Válasz az MI-től
Go nyelvben egy interfész értéke lehet nil vagy meghatározatlan a következő esetekben:
-
Interfész változó nincs inicializálva Ha az interfész változót deklarálják, de nem rendelnek hozzá értéket, akkor az
nilértékű. -
Az interfész tartalmaz egy null pointert Go-ban az interfész két részből áll: típus és érték. Ha a típus meg van adva, de az érték null pointer (
nil), akkor az interfész nem egyenlőnil-lal, bár a belső érték hiányzik. -
nilérték átadása az interfésznek Ha egy adott típus ((*MyStruct)(nil))nilértékét adjuk át az interfésznek, az nem lesz egyenlőnil-lal, mivel a típus jelen van.
Példa:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, mivel a típus *int jelen van, de az érték nil
if i == nil {
fmt.Println("i nil")
} else {
fmt.Println("i nem nil")
}
Fontos figyelembe venni ezt nil ellenőrzéseknél, hogy elkerüljük a téves pozitív eredményeket.