Sobes.tech
Senior

Qu'est-ce que les canaux en Go et à quoi servent-ils ? Quels types de canaux existent ?

sobes.tech IA

Réponse de l'IA

Les canaux en Go sont un mécanisme pour transmettre des données entre goroutines, assurant la synchronisation et l’échange d’informations.

Principales caractéristiques :

  • Permettent de transmettre des valeurs en toute sécurité entre des goroutines s’exécutant en parallèle.
  • Garantissent le blocage de l’expéditeur si le canal est plein et du récepteur si le canal est vide.

Types de canaux :

  • Bidirectionnels (chan T) : peuvent envoyer et recevoir des données.
  • Uni-directionnels pour l’envoi (chan<- T) : peuvent uniquement envoyer des données.
  • Uni-directionnels pour la réception (<-chan T) : peuvent uniquement recevoir des données.

Exemple d’utilisation d’un canal :

ch := make(chan int) // canal bidirectionnel

// Envoi dans une goroutine
go func() {
    ch <- 42
}()

// Réception
val := <-ch
fmt.Println(val) // 42

Les canaux simplifient la communication et la synchronisation entre goroutines, évitant la nécessité de blocages explicites.