Sobes.tech
Senior

Por que precisamos do WaitGroup nesta tarefa?

sobes.tech IA

Resposta da IA

O WaitGroup em Go é utilizado para sincronizar goroutines. Em tarefas onde várias goroutines são iniciadas, o WaitGroup permite que o thread principal aguarde até que todas as goroutines iniciadas terminem antes de continuar a execução. Isso evita que o programa saia prematuramente ou avance para a próxima etapa quando as operações em segundo plano ainda não foram concluídas.

Exemplo de uso:

var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // sinalizamos o término
        // trabalho da goroutine
        fmt.Println("Goroutine", id, "concluída")
    }(i)
}

wg.Wait() // aguardamos a conclusão de todas as goroutines
fmt.Println("Todas as goroutines concluídas")

Assim, o WaitGroup garante uma coordenação correta e evita condições de corrida ou término prematuro do programa.