Sobes.tech
Junior — Middle

Када у програмирању интерфејс може имати вредност nil или бити неопредељен?

sobes.tech АИ

Одговор од АИ

U Go, interfejs može imati vrednost nil ili biti nedefinisan u sledećim slučajevima:

  1. Neinicijalizovana promenljiva interfejsa Ako je promenljiva interfejsa deklarisana, ali joj nije dodeljena vrednost, ona je jednaka nil.

  2. Interfejs sadrži nul pokazivač U Go, interfejs se sastoji od dva dela: tipa i vrednosti. Ako je tip postavljen, ali vrednost je nul pokazivač (nil), interfejs nije jednak nil, iako unutrašnja vrednost nedostaje.

  3. Prosleđivanje nil u interfejs Ako prosledite u interfejs vrednost nil određenog tipa (npr. (*MyStruct)(nil)), interfejs neće biti jednak nil, jer je tip prisutan.

Primer:

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, jer je tip *int prisutan, ali vrednost je `nil`

if i == nil {
    fmt.Println("i je nil")
} else {
    fmt.Println("i nije nil")
}

Važno je uzeti u obzir ovo pri proverama na nil kako bi se izbegli lažni pozitivni rezultati.