Junior — Middle
Када у програмирању интерфејс може имати вредност nil или бити неопредељен?
sobes.tech АИ
Одговор од АИ
U Go, interfejs može imati vrednost nil ili biti nedefinisan u sledećim slučajevima:
-
Neinicijalizovana promenljiva interfejsa Ako je promenljiva interfejsa deklarisana, ali joj nije dodeljena vrednost, ona je jednaka
nil. -
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 jednaknil, iako unutrašnja vrednost nedostaje. -
Prosleđivanje
nilu interfejs Ako prosledite u interfejs vrednostnilodređenog tipa (npr.(*MyStruct)(nil)), interfejs neće biti jednaknil, 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.