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