WaitGroup.Go en Go
Go 1.25 agregó Go, que hace el Add y el Done por ti.
func square(values []int) []int {
results := make([]int, len(values))
var wg sync.WaitGroup
for i, value := range values {
wg.Go(func() {
results[i] = value * value // cada índice se escribe una vez
})
}
wg.Wait()
return results
}
Cómo funciona
wg.Go(f)reemplaza Add, una goroutine y un Done diferido.Waitsigue bloqueando hasta que cada tarea termina.- Los resultados aún piden un canal o un mutex; el grupo solo cuenta.
Palabras clave y builtins usados aquí
forfuncintlenmakerangereturnvar
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 232
- Tokens
- 66
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 42 segundos.
Paso 2 de 3 en Goroutines; paso 2 de 25 en Concurrencia.