Sobes.tech
Назад к вопросам
Middle+
1

Задача 2: Что выведет код с интерфейсами и nil? (typed nil vs untyped nil)

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

В Go интерфейс может содержать значение и тип. Когда интерфейс содержит typed nil (например, указатель с nil), он не равен untyped nil, потому что тип интерфейса не nil.

Пример:

package main
import "fmt"

type I interface{}

type T struct{}

func main() {
    var p *T = nil
    var i I = p

    fmt.Println(p == nil) // true, p — typed nil указатель
    fmt.Println(i == nil) // false, i содержит тип *T, значение nil
}

Вывод будет:

true
false

Это важно учитывать, чтобы не ошибиться при проверке nil интерфейсов — нужно проверять конкретные типы или использовать type assertion.