Sobes.tech
Junior — Middle

De quelles manières peut-on utiliser un canal dans un programme?

sobes.tech IA

Réponse de l'IA

En Go, un canal (channel) est utilisé pour transmettre des données entre goroutines et organiser la synchronisation.

Les principales façons d'utiliser un canal :

  1. Envoi et réception de données :

    • Envoi : ch <- value
    • Réception : value := <-ch
  2. Canaux tamponnés et non tamponnés :

    • Un canal non tamponné bloque l'expéditeur jusqu'à ce que le récepteur accepte les données.
    • Un canal tamponné permet d'envoyer plusieurs valeurs sans blocage, jusqu'à ce que le tampon soit plein.
  3. Fermeture du canal :

    • Le canal peut être fermé avec la fonction close(ch), pour signaler qu'il n'y aura plus de données.
  4. Utilisation de select pour la multiplexion :

    • Permet d'attendre plusieurs canaux simultanément et de réagir au premier disponible.

Exemple :

ch := make(chan int, 2) // canal tamponné

// Envoi
ch <- 1
ch <- 2

// Réception
val := <-ch

// Fermeture
close(ch)

// Utilisation de select
select {
case v := <-ch:
    fmt.Println("Reçu", v)
case <-time.After(time.Second):
    fmt.Println("Timeout")
}

Ainsi, les canaux permettent d'échanger des données en toute sécurité et de synchroniser l'exécution des goroutines.