Sobes.tech
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:

  1. 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ű.

  2. 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.

  3. 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.