Sobes.tech
Junior — Middle

Pouvez-vous partager un exemple de comment vous avez implémenté la gestion des erreurs avec error.Group dans vos projets?

sobes.tech IA

Réponse de l'IA

Dans le paquet errors de Go avec le type Group (par exemple, de golang.org/x/sync/errgroup), il est facile de collecter et de traiter plusieurs erreurs survenant dans des goroutines parallèles.

Exemple d'utilisation de errgroup.Group pour exécuter des tâches en parallèle avec gestion des erreurs :

import (
    "fmt"
    "golang.org/x/sync/errgroup"
)

func processTasks() error {
    var g errgroup.Group

    tâches := []func() error{
        func() error { /* tâche 1 */ return nil },
        func() error { /* tâche 2 */ return fmt.Errorf("erreur dans la tâche 2") },
        func() error { /* tâche 3 */ return nil },
    }

    for _, tâche := range tâches {
        t := tâche
        g.Go(func() error {
            return t()
        })
    }

    if err := g.Wait(); err != nil {
        // Traitement de la première erreur rencontrée
        return err
    }
    return nil
}

Dans mes projets, j'ai utilisé errgroup pour lancer plusieurs opérations indépendantes en parallèle et recueillir les erreurs proprement, ce qui simplifie le code et améliore la lisibilité.