Sobes.tech
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.