Junior — Middle
Čime se razlikuje izraz praznog interfejsa od vrednosti nil u jeziku Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go, prazan interfejs (interface{}) je tip koji može sadržavati vrednost bilo kog tipa, uključujući nil. Međutim, izraz praznog interfejsa i vrednost nil su dve različite stvari.
var x interface{}— promenljivaxtipa praznog interfejsa, koja po defaultu je jednakanil, tj. ne sadrži ni tip ni vrednost.- Ali ako joj dodelite neku vrednost, na primer
x = 5, ondaxviše nijenil, jer sadrži tipinti vrednost5.
Razlika je u tome što je interfejs u Go internim putem predstavljen sa dva pokazivača: na tip i na vrednost. Interfejs je jednak nil samo ako su oba pokazivača nil.
Primer:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, jer tip *int postoji, iako je vrednost `nil`
fmt.Println(i == nil) // false
Dakle, prazan interfejs može sadržavati vrednost nil određenog tipa, ali sam interfejs neće biti jednak nil. Ovo je važna tačka pri proverama na nil u Go.