Sobes.tech
Junior — Middle

Vai vari dalīties ar piemēru, kā jūs īstenojāt kļūdu pārvaldību, izmantojot error.Group savos projektos?

sobes.tech AI

Atbilde no AI

Go paketē errors ar tipu Group (piemēram, no golang.org/x/sync/errgroup) ir viegli savākt un apstrādāt vairākas kļūdas, kas rodas paralēlajās gorutīnās.

Piemērs, kā izmantot errgroup.Group paralēlai uzdevumu izpildei ar kļūdu apstrādi:

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

func processTasks() error {
    var g errgroup.Group

    uzdevumi := []func() error{
        func() error { /* uzdevums 1 */ return nil },
        func() error { /* uzdevums 2 */ return fmt.Errorf("kļūda uzdevumā 2") },
        func() error { /* uzdevums 3 */ return nil },
    }

    for _, uzdevums := range uzdevumi {
        u := uzdevums
        g.Go(func() error {
            return u()
        })
    }

    if err := g.Wait(); err != nil {
        // Apstrādāt pirmo sastapto kļūdu
        return err
    }
    return nil
}

Projektos esmu izmantojis errgroup, lai paralēli uzsāktu vairākas neatkarīgas operācijas un organizēti savāktu kļūdas, kas vienkāršo kodu un uzlabo lasāmību.