Junior — Middle
In welke situaties in de programmeertaal kan een interface de waarde nil hebben?
sobes.tech AI
Antwoord van AI
В Go интерфейс может иметь значение nil в двух случаях:
- Сам интерфейс не содержит ни одного значения и типа — то есть он не указывает ни на какой объект. Например:
var i interface{} // i == nil
- Интерфейс содержит значение, которое само по себе является
nil, но при этом тип внутри интерфейса неnil. В этом случае интерфейс не равенnil, хотя внутреннее значение — да. Например:
type MyType struct{}
var p *MyType = nil
var i interface{} = p
fmt.Println(i == nil) // false, потому что тип *MyType не nil
Таким образом, интерфейс равен nil только если и тип, и значение внутри него равны nil. Это важно учитывать при проверках, чтобы избежать ложных срабатываний.