Назад к вопросам
Junior — Middle
75
В каких ситуациях в языке программирования интерфейс может иметь значение nil?
Компании, где спрашивали
Digital Spirit
Ответ от нейросети
sobes.tech 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. Это важно учитывать при проверках, чтобы избежать ложных срабатываний.