Junior — Middle
Qual é o papel e a finalidade do tipo ErrGroup na linguagem Go para gerir erros em grupo?
sobes.tech IA
Resposta da IA
Em Go, o tipo errgroup.Group do pacote golang.org/x/sync/errgroup é utilizado para gerir um grupo de goroutines que podem retornar erros. A sua função principal é lançar várias tarefas em paralelo e recolher o primeiro erro que ocorrer em qualquer delas, simplificando o tratamento de erros durante a execução concorrente.
As principais funcionalidades de errgroup.Group:
- Permite lançar várias goroutines através do método
Go(func() error). - O método
Wait()bloqueia a execução até que todas as goroutines tenham terminado e devolve o primeiro erro, se houver.
Exemplo de uso:
import (
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
tasks := []func() error{
func() error { /* tarefa 1 */ return nil },
func() error { /* tarefa 2 */ return errors.New("erro") },
func() error { /* tarefa 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
}
Desta forma, errgroup.Group ajuda a gerir de forma segura e conveniente a execução paralela e o tratamento de erros em Go.