Назад к вопросам
СБЕР
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.