Почему interface{} со значением nil внутри не равен nil?
Уровень: Senior
Ответ
Потому что интерфейсное значение в Go состоит из двух частей: конкретного типа и указателя на данные. Если переменной interface{} присвоен nil указатель какого-то типа (например, *MyStruct(nil)), сам интерфейс не равен nil — в нём сохранена информация о типе. Интерфейс считается nil-только когда в нём не задан ни тип, ни значение.