Junior — Middle
Կարող եք կիսվել օրինակով, թե ինչպես եք իրականացնում սխալների կառավարումը error.Group-ով ձեր նախագծերում?
sobes.tech AI
Պատասխան AI-ից
Go փաթեթի errors մեջ Group տիպով (օրինակ, golang.org/x/sync/errgroup-ից) հեշտ է հավաքել և մշակել մի քանի սխալներ, որոնք առաջանում են համաժամանակյա goroutines-ներում:
Օրինակ՝ errgroup.Group-ի օգտագործումը՝ սխալների մշակմամբ միաժամանակյա առաջադրանքներ կատարելու համար:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
առաջադրանքներ := []func() error{
func() error { /* առաջադրանք 1 */ return nil },
func() error { /* առաջադրանք 2 */ return fmt.Errorf("սխալ առաջադրանք 2-ում") },
func() error { /* առաջադրանք 3 */ return nil },
}
for _, առաջադրանք := range առաջադրանքներ {
a := առաջադրանք
g.Go(func() error {
return a()
})
}
if err := g.Wait(); err != nil {
// Առաջին հանդիպած սխալը մշակել
return err
}
return nil
}
Իմ նախագծերում օգտագործել եմ errgroup՝ միաժամանակ մի քանի անկախ գործողություններ սկսելու և սխալները կազմակերպված հավաքելու համար, ինչը պարզեցնում է կոդը և բարելավում ընթերցելիությունը։