Правило: при возврате error (или любого интерфейса) не возвращай типизированную переменную. Плохо: var err *MyError; if ok { err = &MyError{} }; return err — если ok=false, вернётся typed nil. Хорошо: if ok { return &MyError{} }; return nil. Используй линтеры (nilaway, nilerr) для автоматического обнаружения. В тестах проверяй: if err != nil && !reflect.ValueOf(err).IsNil() — но это костыль. Главное — писать правильно с самого начала. Если видишь var err SomeErrorType — красный флаг.
Как избежать typed nil bug?
Middle+
246 просмотровAFK Offer AI
Что такое preflight request?