Junior — Middle
Meg tudnád osztani egy példát arra, hogyan valósítottad meg a hibakezelést az error.Group segítségével a projektjeidben?
sobes.tech MI
Válasz az MI-től
A Go errors csomagjában az Group típus (például a golang.org/x/sync/errgroup-ból) könnyen összegyűjtheti és kezelheti a párhuzamos goroutine-okban keletkező több hibát.
Az errgroup.Group használatának példája párhuzamos feladatok futtatására hibakezeléssel:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
feladatok := []func() error{
func() error { /* feladat 1 */ return nil },
func() error { /* feladat 2 */ return fmt.Errorf("hiba a 2. feladatban") },
func() error { /* feladat 3 */ return nil },
}
for _, feladat := range feladatok {
f := feladat
g.Go(func() error {
return f()
})
}
if err := g.Wait(); err != nil {
// Az első hibát kezeljük
return err
}
return nil
}
A projektjeimben az errgroup-ot használtam több független művelet párhuzamos futtatására és hibák rendezett gyűjtésére, ami egyszerűsíti a kódot és javítja az olvashatóságot.