TGViewer
Библиотека Go для собеса | вопросы с собеседований Библиотека Go для собеса | вопросы с собеседований @go_interview_lib · 7.47K subscribers
Post #1484 1.91K
Как создать свою кастомную ошибку в Go

Пакет errors — самый быстрый способ

Подходит для простых статичных ошибок. Такую переменную удобно объявить один раз и сравнивать через errors.Is.
var ErrNotFound = errors.New("запись не найдена")


fmt.Errorf() — когда нужен контекст

Позволяет подставить в текст детали. А глагол %w ещё и «оборачивает» исходную ошибку, сохраняя цепочку для errors.Is / errors.Unwrap.

return fmt.Errorf("не удалось загрузить юзера %d: %w", id, ErrNotFound)


• Кастомный тип через
struct — максимум гибкости

Нужен, когда к ошибке хочется прикрепить данные (код, поле, статус). Достаточно реализовать метод Error() string — и тип становится ошибкой.
type ValidationError struct {
Field string
Msg string
}

func (e *ValidationError) Error() string {
return fmt.Sprintf("%s: %s", e.Field, e.Msg)
}


Такую ошибку потом можно вытащить через errors.As и прочитать её поля.

🐸 Библиотека Go для собеса
  • 👍 4
More from @go_interview_lib
  1. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 15, 2026❓ Какой максимальный размер бинарного файла можно собрать В Go нет встроенного ограничения…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Aug 4, 2026❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →