Senior
Você decidiu escrever WaitGroup porque apareceu um canal ou porque decidiu escrever goroutines para alguma coisa?
sobes.tech IA
Resposta da IA
O WaitGroup em Go é usado para esperar que um grupo de goroutines termine.
Se tiver várias goroutines a executar tarefas em paralelo e precisar de esperar que todas terminem antes de continuar, o WaitGroup é uma ferramenta conveniente.
Os canais e as goroutines são mecanismos diferentes. Um canal serve para comunicação e sincronização entre goroutines, enquanto o WaitGroup serve para esperar que elas terminem.
Por exemplo, se tiver goroutines a realizar tarefas e quiser esperar que todas terminem, usa o WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // espera por 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// trabalho da goroutine
fmt.Println("Goroutine", id, "terminada")
}(i)
}
wg.Wait() // espera que todas as goroutines terminem
Assim, o WaitGroup é usado exatamente porque há goroutines que precisam de sincronização na sua finalização, e não por causa do aparecimento de canais.