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é.