Junior — Middle
Wie kann man die Ergebnisse von fünf gleichzeitig laufenden Goroutines sammeln und verarbeiten?
sobes.tech KI
Antwort von AI
Um fünf Goroutines gleichzeitig auszuführen und ihre Ergebnisse zu sammeln, kannst du in Go Kanäle (channels) verwenden. Jede Goroutine sendet ihr Ergebnis in den Kanal, und die Hauptfunktion liest die erforderliche Anzahl von Malen aus dem Kanal.
Beispiel:
package main
import (
"fmt"
"sync"
)
func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
defer wg.Done()
// irgendeine Arbeit
result := id * 2
ch <- result
}
func main() {
ch := make(chan int, 5) // gepufferter Kanal
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("Ergebnis:", res)
}
}
Hier ist worker eine Goroutine, die das Ergebnis berechnet und in den Kanal sendet. Die Hauptfunktion wartet mit WaitGroup, bis alle Goroutines beendet sind, schließt dann den Kanal und liest alle Ergebnisse.