Looking for go Keywords? Try Ask4Keywords

GoCanaux


Introduction

Un canal contient des valeurs d'un type donné. Les valeurs peuvent être écrites sur un canal et en être lues, et elles circulent à l’intérieur du canal dans l’ordre du premier entré, premier sorti. Il existe une distinction entre les canaux tamponnés, qui peuvent contenir plusieurs messages, et les canaux non tamponnés, ce qui est impossible. Les canaux sont généralement utilisés pour communiquer entre les goroutines, mais sont également utiles dans d'autres circonstances.

Syntaxe

  • make (chan int) // crée un canal sans tampon
  • make (chan int, 5) // crée un canal en mémoire tampon d'une capacité de 5
  • close (ch) // ferme un canal "ch"
  • ch <- 1 // écrit la valeur de 1 dans un canal "ch"
  • val: = <-ch // lit une valeur du canal "ch"
  • val, ok: = <-ch // syntaxe alternative; ok est un bool indiquant si le canal est fermé

Remarques

Un canal contenant la structure vide make(chan struct{}) indique clairement à l'utilisateur qu'aucune information n'est transmise sur le canal et qu'elle est utilisée uniquement pour la synchronisation.

En ce qui concerne les canaux non tamponnés, une écriture de canal bloquera jusqu'à ce qu'une lecture correspondante se produise à partir d'une autre goroutine. La même chose est vraie pour un blocage de lecture de canal en attendant un écrivain.

Canaux Exemples Liés