Бесплатные материалы

Всё про ошибки в Go | Полное руководство для работы и собеседований

ИСТОЧНИК:
В этом видео мы разберем обработку ошибок в Go от «А» до «Я» — как устроены ошибки под капотом, почему важно понимать разницу между errors.Is и errors.As, и как правильно использовать панику и дефёр в реальных приложениях.

В этом уроке:

  • Природа ошибок: почему ошибки в Go — это значения, и как работает встроенный интерфейс error.
  • Ловушка с NIL: разбираем популярный баг с интерфейсами, когда ошибка кажется пустой, но проверка err != nil возвращает true.
  • Цепочки ошибок (Error Wrapping): учимся чейнить ошибки через fmt.Errorf с глаголом %w, использовать errors.Join и распаковывать их для анализа.
  • Механизм Defer: как отложенные вызовы помогают управлять ресурсами, в каком порядке они выполняются и как могут менять именованные возвращаемые значения.
  • Паника и восстановление: в каких случаях допустимо использовать panic, как работает recover и как за кулисами происходит раскрутка стека (unwinding).
  • Практика: пишем безопасный сервер, который не падает при внутренних ошибках, и даже пробуем реализовать конструкцию try-catch на Go (и узнаем, почему так делать не стоит).

В итоге у тебя будет полное руководство по работе с исключительными ситуациями: от написания кастомных типов ошибок до понимания нюансов рантайма, что позволит тебе писать надежный код и уверенно отвечать на сложные вопросы на собеседованиях.

Дополнительные материалы к видео

Исходный код
https://github.com/IgorWalther/videos/tree/master/0016_errors
Видео про интерфейсы (дженерики)
https://t.me/igoroutine/89?comment=321
Код Go касательно defer в цикле
https://github.com/golang/go/blob/2b62144069a130cc469f33009c0c392cc6de8810/src/cmd/compile/internal/walk/stmt.go#L109
Продвинутый Go