Назад к вопросам
Junior — Middle
78
Когда в программировании интерфейс может иметь значение nil или быть неопределенным?
Компании, где спрашивали
Startribe
Ответ от нейросети
sobes.tech AI
В Go интерфейс может иметь значение nil или быть неопределённым в следующих случаях:
-
Интерфейсная переменная не инициализирована Если интерфейсная переменная объявлена, но не присвоено значение, она равна
nil. -
Интерфейс содержит нулевой указатель Интерфейс в Go состоит из двух частей: тип и значение. Если тип задан, но значение — нулевой указатель (
nil), то интерфейс не равенnil, хотя внутреннее значение отсутствует. -
Передача
nilв интерфейс Если передать в интерфейс значениеnilконкретного типа (например,(*MyStruct)(nil)), интерфейс не будет равенnil, так как тип присутствует.
Пример:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, так как тип *int присутствует, но значение nil
if i == nil {
fmt.Println("i is nil")
} else {
fmt.Println("i is not nil")
}
Это важно учитывать при проверках на nil, чтобы избежать ложных срабатываний.