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