Sobes.tech
Junior — Middle

Wanneer kan een interface in programmering de waarde nil hebben of ongedefinieerd zijn?

sobes.tech AI

Antwoord van AI

In Go kan een interface de waarde nil hebben of ongedefinieerd zijn in de volgende gevallen:

  1. Interfacevariabele niet geïnitialiseerd Als de interfacevariabele is gedeclareerd maar geen waarde is toegekend, is deze gelijk aan nil.

  2. De interface bevat een null-pointer In Go bestaat een interface uit twee delen: type en waarde. Als het type is ingesteld, maar de waarde een null-pointer (nil) is, is de interface niet gelijk aan nil, hoewel de interne waarde ontbreekt.

  3. nil doorgeven aan de interface Als je een nil-waarde van een specifiek type doorgeeft aan de interface (bijvoorbeeld (*MyStruct)(nil)), zal de interface niet gelijk zijn aan nil, omdat het type aanwezig is.

Voorbeeld:

var i interface{} // i == nil

var p *int = nil
i = p // i != nil, omdat het type *int aanwezig is, maar de waarde `nil` is

if i == nil {
    fmt.Println("i is nil")
} else {
    fmt.Println("i is niet nil")
}

Het is belangrijk om hiermee rekening te houden bij nil-controles om valse positieven te voorkomen.