Интерфейс в Go — пара (type, value). nil interface — когда оба nil: (nil, nil). nil pointer в интерфейсе — когда тип установлен: (*MyType, nil). Сравнение == nil проверяет обе части. (*MyType, nil) != nil, потому что type часть не nil. Это by design — интерфейс знает тип даже когда значение nil, и может вызывать методы на nil receiver. Практический совет: никогда не присваивай типизированный nil в интерфейс, если собираешься потом сравнивать с nil. Возвращай просто nil.
Почему nil interface не равен nil pointer?
Middle+
290 просмотровAFK Offer AI
Как найти goroutine leak?