Junior — Middle
Можеш ли да споделиш пример как си реализирал обработката на грешки с помощта на error.Group в проектите си?
sobes.tech AI
Отговор от AI
В пакета errors на Go с типа 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 задачи {
z := задача
g.Go(func() error {
return z()
})
}
if err := g.Wait(); err != nil {
// Обработка на първата срещната грешка
return err
}
return nil
}
В проектите си използвах errgroup за стартиране на няколко независими операции паралелно и за събиране на грешки по организиран начин, което опростява кода и подобрява четимостта.