Определение собственного типа ошибки

Тип из условия уже реализует error: у него есть метод Error() string. Значение можно возвращать из функции с результатом error и разбирать через errors.As.

Короткий ответ

Что ответить на собеседовании

Тип из условия уже реализует error: у него есть метод Error() string. Значение можно возвращать из функции с результатом error и разбирать через errors.As.

Подробный разбор

Ответ с пояснениями

Условие

Создайте пользовательский тип ошибки и реализуйте у него метод Error(), чтобы он соответствовал стандартному интерфейсу error.

type MyError struct {
    Message string
    Status  int
}

func (e MyError) Error() string {
    return fmt.Sprintf("%s (code %d)", e.Message, e.Status)
}

Ответ

Тип из условия уже реализует error: у него есть метод Error() string. Значение можно возвращать из функции с результатом error и разбирать через errors.As.

Например, return MyError{Message: "invalid request", Status: 400}. Для распознавания используйте var target MyError; if errors.As(err, &target) { ... }. Если возвращаете *MyError, цель As должна соответствовать указательному типу. Не проверяйте причину парсингом текста Error и не помещайте туда секретные данные.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее