Junior — Middle
Podes partilhar um exemplo de como implementaste o tratamento de erros usando error.Group nos teus projetos?
sobes.tech IA
Resposta da IA
No pacote errors do Go com o tipo Group (por exemplo, de golang.org/x/sync/errgroup) permite coletar e tratar facilmente múltiplos erros que ocorrem em goroutines paralelas.
Exemplo de uso de errgroup.Group para executar tarefas em paralelo com tratamento de erros:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
tarefas := []func() error{
func() error { /* tarefa 1 */ return nil },
func() error { /* tarefa 2 */ return fmt.Errorf("erro na tarefa 2") },
func() error { /* tarefa 3 */ return nil },
}
for _, tarefa := range tarefas {
t := tarefa
g.Go(func() error {
return t()
})
}
if err := g.Wait(); err != nil {
// Tratamento do primeiro erro encontrado
return err
}
return nil
}
Nos meus projetos, usei errgroup para iniciar várias operações independentes em paralelo e coletar erros de forma organizada, o que simplifica o código e melhora a legibilidade.