Sobes.tech
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.