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

Когда может возникнуть ситуация, что интерфейс объекта равен null?

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

sobes.tech AI

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

  1. Когда переменная интерфейсного типа не содержит ни одного значения (то есть не указывает ни на какой объект).
  2. Когда интерфейс содержит указатель на структуру, который сам по себе равен nil.

Важно понимать, что интерфейс состоит из двух частей: типа и значения. Интерфейс равен nil только если оба — тип и значение — равны nil. Если тип задан, а значение nil, интерфейс не равен nil.

Пример:

var i interface{} // i == nil

var p *int = nil
var i2 interface{} = p // i2 != nil, хотя p == nil

fmt.Println(i == nil)  // true
fmt.Println(i2 == nil) // false

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