Middle
Šta je nil interfejs?
sobes.tech АИ
Одговор од АИ
U Go-u, nil interfejs je vrednost interfejsa koja ne sadrži ni konkretan tip ni vrednost. Interfejs u Go-u je predstavljen u dva dela: tip i vrednost. Interfejs se smatra nil ako su oba dela jednaka nil.
Važno je razumeti da interfejs može sadržati nil pokazivač na konkretan tip, ali sam interfejs neće biti nil, jer je tip definisan.
Primer:
var i interface{} // i == nil
var p *int = nil
var i2 interface{} = p // i2 != nil, jer je tip *int definisan, iako je vrednost nil
fmt.Println(i == nil) // true
fmt.Println(i2 == nil) // false
Ovo često dovodi do grešaka kada proveravate da li je interfejs nil, ali on sadrži nil pokazivač, i uslov se ne ispunjava.
Zbog toga je važno, kada radite sa interfejsima, imati u vidu da je nil interfejs interfejs bez tipa i vrednosti u isto vreme.