Sobes.tech
Junior — Middle

Môžeš zdieľať príklad, ako si implementoval spracovanie chýb pomocou error.Group vo svojich projektoch?

sobes.tech AI

Odpoveď od AI

V balíku errors v Go s typom Group (napríklad z golang.org/x/sync/errgroup) je ľahké zbierať a spracovávať viacero chýb, ktoré vznikajú v paralelných gorutinách.

Príklad použitia errgroup.Group na paralelné vykonávanie úloh s ošetrením chýb:

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

func processTasks() error {
    var g errgroup.Group

    úlohy := []func() error{
        func() error { /* úloha 1 */ return nil },
        func() error { /* úloha 2 */ return fmt.Errorf("chyba v úlohe 2") },
        func() error { /* úloha 3 */ return nil },
    }

    for _, úloha := range úlohy {
        u := úloha
        g.Go(func() error {
            return u()
        })
    }

    if err := g.Wait(); err != nil {
        // Spracovanie prvej chyby
        return err
    }
    return nil
}

V mojich projektoch som používal errgroup na spustenie viacerých nezávislých operácií paralelne a na ich správne zbieranie chýb, čo zjednodušuje kód a zlepšuje čitateľnosť.