Junior — Middle
Hoe kun je de resultaten van vijf gelijktijdig uitgevoerde goroutines verzamelen en verwerken?
sobes.tech AI
Antwoord van AI
Om vijf goroutines gelijktijdig uit te voeren en hun resultaten te verzamelen, kun je kanalen (channels) in Go gebruiken. Elke goroutine stuurt het resultaat naar het kanaal, en de hoofdfunctie leest het benodigde aantal keer uit het kanaal.
Voorbeeld:
package main
import (
"fmt"
"sync"
)
func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
defer wg.Done()
// wat werk
result := id * 2
ch <- result
}
func main() {
ch := make(chan int, 5) // gebufferd kanaal
var wg sync.WaitGroup
for i := 1; i <= 5; i++ {
wg.Add(1)
go worker(i, ch, &wg)
}
wg.Wait()
close(ch)
for res := range ch {
fmt.Println("Result:", res)
}
}
Hier is worker een goroutine die het resultaat berekent en naar het kanaal stuurt. De hoofdfunctie wacht met WaitGroup tot alle goroutines klaar zijn, sluit dan het kanaal en leest alle resultaten.