Что такое Errgroup

«Что такое Errgroup» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 с встроенной обработкой ошибок.