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

  1. Neinitializovaná premenná rozhrania Ak je premenná rozhrania deklarovaná, ale jej nie je priradená žiadna hodnota, je rovná nil.

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

  3. Odovzdanie nil do rozhrania Ak odovzdáte do rozhrania hodnotu nil konkré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.