Назад к вопросам
Junior — Middle
77
Вы когда-нибудь применяли структуру ErrGroup в своих проектах для управления параллельными задачами?
Ответ от нейросети
sobes.tech AI
Да, структура errgroup.Group из пакета golang.org/x/sync/errgroup часто использовалась для управления параллельными задачами.
Она позволяет запускать несколько горутин, собирать ошибки и ждать завершения всех задач. Это удобно, когда нужно выполнить несколько независимых операций параллельно и обработать ошибки централизованно.
Пример использования:
import (
"context"
"golang.org/x/sync/errgroup"
)
func fetchData(ctx context.Context) error {
g, ctx := errgroup.WithContext(ctx)
urls := []string{"url1", "url2", "url3"}
for _, url := range urls {
url := url // локальная копия для замыкания
g.Go(func() error {
// здесь код для загрузки данных с url
return nil // или ошибка
})
}
if err := g.Wait(); err != nil {
return err
}
return nil
}
Таким образом, errgroup упрощает параллельное выполнение с контролем ошибок и отменой через контекст.