Junior — Middle
Wat is het verschil tussen een lege interface en de waarde nil in de Go-taal?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is de lege interface (interface{}) een type dat een waarde van elk type kan bevatten, inclusief nil. Echter, de uitdrukking van een lege interface en de waarde nil zijn twee verschillende dingen.
var x interface{}— een variabelexvan het type lege interface, die standaard gelijk is aannil, dat wil zeggen dat het geen type of waarde bevat.- Maar als je
xeen waarde toewijst, bijvoorbeeldx = 5, dan isxniet meernil, omdat het het typeinten de waarde5bevat.
Het verschil is dat de interface in Go intern wordt weergegeven door twee pointers: één naar het type en één naar de waarde. De interface is alleen gelijk aan nil als beide pointers nil zijn.
Voorbeeld:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, omdat het type *int aanwezig is, ook al is de waarde `nil`
fmt.Println(i == nil) // false
Dus, een lege interface kan een waarde nil van een specifiek type bevatten, maar de interface zelf is niet gelijk aan nil. Dit is een belangrijk punt bij het controleren op nil in Go.