Sobes.tech
Back to questions
Junior — Middle
74

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

Answer from AI

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.