Middle
Wat is de nil-interface?
sobes.tech AI
Antwoord van AI
In Go is nil een interfacewaarde die geen specifiek type of waarde bevat. De interface in Go wordt voorgesteld door twee delen: het type en de waarde. Een interface wordt als nil beschouwd als beide delen gelijk zijn aan nil.
Het is belangrijk te begrijpen dat een interface een nil-naarwijzing naar een specifiek type kan bevatten, maar de interface zelf niet nil zal zijn, omdat het type is vastgesteld.
Voorbeeld:
var i interface{} // i == nil
var p *int = nil
var i2 interface{} = p // i2 != nil, omdat het type *int is vastgesteld, ook al is de waarde nil
fmt.Println(i == nil) // true
fmt.Println(i2 == nil) // false
Dit leidt vaak tot fouten wanneer wordt gecontroleerd of een interface nil is, maar deze bevat een nil-naarwijzing, en de voorwaarde wordt niet voldaan.
Daarom is het bij het werken met interfaces belangrijk om te beseffen dat een nil-interface een interface is zonder type en waarde tegelijk.