Интерфейс — это пара (type, value). nil интерфейс имеет type=nil и value=nil. Но если присвоить (*MyStruct)(nil) интерфейсу, то type=*MyStruct, value=nil — это не nil интерфейс! Поэтому if err != nil будет true для typed nil. Решение: возвращать nil напрямую, а не типизированный nil pointer. Это самый коварный gotcha в Go.
Почему nil interface не равен nil?
Middle
190 просмотровAFK Offer AI
Что такое PagerDuty?