Почему nil interface не равен nil?

Middle
190 просмотров
AFK Offer AI

Интерфейс — это пара (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.

Следующий вопрос

Что такое PagerDuty?