Sobes.tech
Назад к вопросам
Junior — Middle
75

В каких ситуациях в языке программирования интерфейс может иметь значение nil?

Компании, где спрашивали
Digital Spirit

Ответ от нейросети

sobes.tech AI

В Go интерфейс может иметь значение nil в двух случаях:

  1. Сам интерфейс не содержит ни одного значения и типа — то есть он не указывает ни на какой объект. Например:
var i interface{} // i == nil
  1. Интерфейс содержит значение, которое само по себе является nil, но при этом тип внутри интерфейса не nil. В этом случае интерфейс не равен nil, хотя внутреннее значение — да. Например:
type MyType struct{}

var p *MyType = nil
var i interface{} = p

fmt.Println(i == nil) // false, потому что тип *MyType не nil

Таким образом, интерфейс равен nil только если и тип, и значение внутри него равны nil. Это важно учитывать при проверках, чтобы избежать ложных срабатываний.