Files
deep_go/homework/08.md
2025-05-23 07:54:04 +03:00

1.8 KiB
Raw Blame History

Домашнее задание №8

📗 В домашнем задании нужно реализовать собственный тип ошибки MultiError.

Это позволяет функции возвращать ошибку, которая на самом деле может быть списком ошибок. Если вызывающая сторона знает это, она может развернуть список и получить доступ к ошибкам. Если вызывающая сторона не знает, ошибка преобразуется в удобный для чтения человеком формат. Поподробнее с таким типом ошибок можно ознакомиться здесь.

API для собственного типа ошибки будет выглядеть следующим образом:

type MultiError struct { ... }
                  
func (e *MultiError) Error() string                // вернуть текст ошибки
func Append(err error, errs ...error) *MultiError  // добавить ошибку к существующей

📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.

Задание со звездочкой

Выполнять необязательно, но если вы хотите, можете попробовать дополнительно сделать собственный тип ошибки совместимым с функциями errors.Is, errors.As и errors.Unwrap из стандартной библиотеки.