Sobes.tech
Назад к вопросам
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 для запуска нескольких независимых операций параллельно и аккуратного сбора ошибок, что упрощает код и улучшает читаемость.