Как агрегировать ошибки?

Middle
379 просмотров
AFK Offer AI

С Go 1.20 самый простой способ — errors.Join. Собираешь ошибки в слайс и в конце: return errors.Join(errs...). Результат содержит все ошибки, и errors.Is/As проверяет каждую. Для более сложных случаев — uber-go/multierr с Append, Combine. Паттерн: var errs []error; для каждой операции if err != nil { errs = append(errs, err) }. В параллельном коде — sync.Mutex или errgroup. Важно: не подавляй ошибки, агрегируй их. Если из пяти Close() два упали — верни обе ошибки.

Следующий вопрос

Sync vs async коммуникация?