Ответ
errgroup — это пакет в Go (golang.org/x/sync/errgroup), упрощающий обработку ошибок в группах горутин. Он позволяет запускать несколько задач параллельно и возвращать первую возникшую ошибку, автоматически отменяя остальные через context.
Пример:
g, ctx := errgroup.WithContext(context.Background())
g.Go(func() error {
return doTask1(ctx)
})
g.Go(func() error {
return doTask2(ctx)
})
if err := g.Wait(); err != nil {
log.Fatal(err) // Первая ошибка из любой горутины
}
Особенности:
- Автоматический
context.Cancelпри ошибке в любой горутине. - Блокирующий
Wait(), ожидающий завершения всех горутин. - Удобен для сценариев, где нужно параллельно выполнить и агрегировать ошибки.
Альтернатива sync.WaitGroup с встроенной обработкой ошибок.