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