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.