Домашки
This commit is contained in:
27
homework/08.md
Normal file
27
homework/08.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Домашнее задание №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 из стандартной библиотеки.
|
||||
|
||||
Reference in New Issue
Block a user