Junior — Middle
Comment collecter et traiter les résultats de cinq goroutines lancées simultanément?
sobes.tech IA
Réponse de l'IA
Pour exécuter cinq goroutines simultanément et collecter leurs résultats, vous pouvez utiliser des canaux (channels) en Go. Chaque goroutine envoie son résultat dans le canal, et la fonction principale lit du canal le nombre nécessaire de fois.
Exemple:
package main
import (
"fmt"
"sync"
)
func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
defer wg.Done()
// un travail quelconque
result := id * 2
ch <- result
}
func main() {
ch := make(chan int, 5) // canal tamponné
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("Résultat:", res)
}
}
Ici, worker est une goroutine qui calcule un résultat et l’envoie dans le canal. La fonction principale attend la fin de toutes les goroutines via WaitGroup, puis ferme le canal et lit tous les résultats.