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

28 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Домашнее задание №8
📗 В домашнем задании нужно реализовать собственный тип ошибки MultiError.
Это позволяет функции возвращать ошибку, которая на самом деле может быть списком ошибок. Если вызывающая сторона знает это, она может развернуть список и получить доступ к ошибкам. Если вызывающая сторона не знает, ошибка преобразуется в удобный для чтения человеком формат. Поподробнее с таким типом ошибок можно ознакомиться здесь.
API для собственного типа ошибки будет выглядеть следующим образом:
```go
type MultiError struct { ... }
func (e *MultiError) Error() string // вернуть текст ошибки
func Append(err error, errs ...error) *MultiError // добавить ошибку к существующей
```
📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.
### Задание со звездочкой
Выполнять необязательно, но если вы хотите, можете попробовать дополнительно сделать собственный тип ошибки совместимым с функциями errors.Is, errors.As и errors.Unwrap из стандартной библиотеки.