Назад к вопросам
Junior — Middle
79
Можешь поделиться примером, как ты реализовал обработку ошибок с помощью error.Group в своих проектах?
Компании, где спрашивали
Startribe
Ответ от нейросети
sobes.tech AI
В Go пакет errors с типом Group (например, из golang.org/x/sync/errgroup) позволяет удобно собирать и обрабатывать несколько ошибок, возникающих в параллельных горутинах.
Пример использования errgroup.Group для параллельного выполнения задач с обработкой ошибок:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
tasks := []func() error{
func() error { /* задача 1 */ return nil },
func() error { /* задача 2 */ return fmt.Errorf("ошибка во 2-й задаче") },
func() error { /* задача 3 */ return nil },
}
for _, task := range tasks {
t := task
g.Go(func() error {
return t()
})
}
if err := g.Wait(); err != nil {
// Обработка первой встретившейся ошибки
return err
}
return nil
}
В своих проектах я использовал errgroup для запуска нескольких независимых операций параллельно и аккуратного сбора ошибок, что упрощает код и улучшает читаемость.