Назад к вопросам
Junior — Middle
76
Когда может возникнуть ситуация, что интерфейс объекта равен null?
Ответ от нейросети
sobes.tech AI
В Go интерфейс может быть равен nil в двух случаях:
- Когда переменная интерфейсного типа не содержит ни одного значения (то есть не указывает ни на какой объект).
- Когда интерфейс содержит указатель на структуру, который сам по себе равен
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.