Sobes.tech
Junior — Middle

Puoi condividere un esempio di come hai implementato la gestione degli errori con error.Group nei tuoi progetti?

sobes.tech AI

Risposta dell'AI

Nel pacchetto errors di Go con il tipo Group (ad esempio, da golang.org/x/sync/errgroup) è possibile raccogliere e gestire facilmente più errori che si verificano in goroutine parallele.

Esempio di utilizzo di errgroup.Group per eseguire task in parallelo con gestione degli errori:

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

func processTasks() error {
    var g errgroup.Group

    compiti := []func() error{
        func() error { /* compito 1 */ return nil },
        func() error { /* compito 2 */ return fmt.Errorf("errore nel compito 2") },
        func() error { /* compito 3 */ return nil },
    }

    for _, compito := range compiti {
        c := compito
        g.Go(func() error {
            return c()
        })
    }

    if err := g.Wait(); err != nil {
        // Gestione del primo errore incontrato
        return err
    }
    return nil
}

Nei miei progetti, ho usato errgroup per avviare più operazioni indipendenti in parallelo e raccogliere gli errori in modo ordinato, semplificando il codice e migliorando la leggibilità.