🔴 Сложный · 3 очк. Интерфейсы
Когда интерфейсная переменная равна nil?
A Когда значение nil
B Когда и тип, и значение nil
C Никогда
D Когда тип nil
Объяснение вопроса

Интерфейсная переменная равна nil только когда и тип, и значение в ней не заданы (оба nil). Интерфейс хранит пару (тип, значение). Частая ловушка: var p *MyStruct = nil, var i interface{} = p - здесь i != nil, потому что тип в паре - *MyStruct, а не nil. Проверка i == nil даёт false. Чтобы интерфейс был nil, в него нужно присвоить "голый" nil: var i interface{} = nil.

var p *int = nil
var i any = p
fmt.Println(i == nil)  // false
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.