Определяешь структуру с нужными полями и методом Error(): type ValidationError struct { Field string; Msg string }; func (e *ValidationError) Error() string { return fmt.Sprintf("%s: %s", e.Field, e.Msg) }. Возвращаешь как error: return &ValidationError{Field: "email", Msg: "invalid"}. Проверяешь через errors.As: var ve *ValidationError; if errors.As(err, &ve) { ... ve.Field ... }. Для wrapping добавь Unwrap() error метод. Кастомные ошибки дают type safety и structured error handling вместо парсинга строк.
Как создать custom error с контекстом?
Middle
313 просмотровAFK Offer AI
Что такое unsafe.Alignof?