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:
-
Interfacevariabele niet geïnitialiseerd Als de interfacevariabele is gedeclareerd maar geen waarde is toegekend, is deze gelijk aan
nil. -
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 aannil, hoewel de interne waarde ontbreekt. -
nildoorgeven aan de interface Als je eennil-waarde van een specifiek type doorgeeft aan de interface (bijvoorbeeld(*MyStruct)(nil)), zal de interface niet gelijk zijn aannil, 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.