Sobes.tech
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.