Sobes.tech
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 variabele x van het type lege interface, die standaard gelijk is aan nil, dat wil zeggen dat het geen type of waarde bevat.
  • Maar als je x een waarde toewijst, bijvoorbeeld x = 5, dan is x niet meer nil, omdat het het type int en de waarde 5 bevat.

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.