Différences entre les versions de « Programmation en Go/Goroutines »

m
<source> -> <syntaxhighlight> (phab:T237267)
m (<source> -> <syntaxhighlight> (phab:T237267))
 
Le mot clé '''go''' permet de lancer un appel de fonction en une goroutine, et de ne pas attendre le résultat:
 
<sourcesyntaxhighlight lang="go"> go list.Sort() // trie une liste en parallèle</sourcesyntaxhighlight>
 
Il est courant d'utiliser une fonction littérale pour appeler une goroutine:
 
<sourcesyntaxhighlight lang="go">
go func(arguments, ...) {
commandes...
} (paramètres, ...)
</syntaxhighlight>
</source>
 
== Les canaux (de communication) ==
On peut créer un canal avec make:
 
<sourcesyntaxhighlight lang="go">
c := make(chan int)
</syntaxhighlight>
</source>
 
Ensuite on peut envoyer et recevoir des données du type précisé, et la première donnée reçue est la première donnée envoyée. (''First In First Out'')
Dans cet exemple, on lance une goroutine et on attend sa fin en recevant le signal qu'elle va envoyer:
 
<sourcesyntaxhighlight lang="go">
go func() {
list.Sort()
blahBlahPendantUnMoment()
<-c // Attend la fin du tri de la liste à la réception du signal
</syntaxhighlight>
</source>
 
== Canaux avec tampon ==
Dans l'exemple suivant, MaxTaches tâches peuvent se dérouler en parallèle:
 
<sourcesyntaxhighlight lang="go">
var sem = make(chan int, MaxTaches)
 
}
}
</syntaxhighlight>
</source>
 
La syntaxe suivante permet de savoir si une case est disponible dans le canal:
 
<sourcesyntaxhighlight lang="go"> v,ok = <- canal</sourcesyntaxhighlight>
 
== Select ==
Voici sa syntaxe:
 
<sourcesyntaxhighlight lang="go">
select {
case canal <- valeur: commandes...
default: ...
}
</syntaxhighlight>
</source>
 
Les différentes alternatives sont évaluées dans l'ordre de leur écriture, la première réception ou émission dans un canal déclenche l'exécution des commandes correspondant à l'alternative. Si aucune de ces opérations ne réussit, le cas par défaut est exécuté, sinon l'opération bloque jusqu'à la réception ou l'envoi d'une donnée.
1 535

modifications