Junior — Middle
100
Жобаларыңызда error.Group көмегімен қателерді өңдеу әдісін қалай жүзеге асырғаныңыздың мысалын келтіре аласыз ба?
Сұралған компаниялар
Startribe
AI-дан жауап
sobes.tech AI
В Go пакет errors с типом Group (например, из golang.org/x/sync/errgroup) позволяет удобно собирать и обрабатывать несколько ошибок, возникающих в параллельных горутинах.
Пример использования errgroup.Group для параллельного выполнения задач с обработкой ошибок:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
tasks := []func() error{
func() error { /* задача 1 */ return nil },
func() error { /* задача 2 */ return fmt.Errorf("ошибка во 2-й задаче") },
func() error { /* задача 3 */ return nil },
}
for _, task := range tasks {
t := task
g.Go(func() error {
return t()
})
}
if err := g.Wait(); err != nil {
// Обработка первой встретившейся ошибки
return err
}
return nil
}
В своих проектах я использовал errgroup для запуска нескольких независимых операций параллельно и аккуратного сбора ошибок, что упрощает код и улучшает читаемость.