Sobes.tech
Junior — Middle

Comment organiser l'interaction et le transfert de données via des canaux dans le système?

sobes.tech IA

Réponse de l'IA

En Go, l'interaction entre goroutines est souvent organisée via des canaux (channels), qui sont des pipelines typés pour la transmission de données.

Pour transmettre des données, on crée un canal avec make(chan Type). Les goroutines peuvent envoyer des données dans le canal en utilisant l'opérateur <-, et aussi recevoir des données du canal avec le même opérateur, ce qui assure la synchronisation.

Exemple :

package main

import (
    "fmt"
    "time"
)

func producteur(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i // envoi de données
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // fermons le canal pour signaler la fin
}

func consommateur(ch <-chan int) {
    for val := range ch { // réception de données du canal
        fmt.Println("Reçu :", val)
    }
}

func main() {
    ch := make(chan int)
    go producteur(ch)
    consommateur(ch)
}

Ainsi, les canaux permettent de transmettre des données entre goroutines de manière sûre et efficace, évitant les conditions de course et les blocages.