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