Ceci fonctionne. Cependant, cela ne le fait pas. p> Pourquoi ai-je besoin d'un <- Code> dans ma déclaration de type pour une chaîne? Je pensais que <- code> était d'écrire ou de lire à partir d'une chaîne. Pourquoi apparaîtrait-il dans un type? P> p>
3 Réponses :
Les canaux
peuvent avoir un type indiquant si elle est réadaptée, écroyablement ou les deux.
indiquant une direction de canal est effectué avec
donc le dans fait partie du type, P> chan time.Time //Would be a read/writable channel
chan<- time.Time // Would be a write only channel
<-chan time.Time // Would be a read only channel
@ David-Faux, notez également que vous pouvez simplement utiliser cocher: = TIME.TICK (1E8) CODE> et le compilateur dérive le type correct pour cocher code> automatiquement. Cette approche réduit considérablement l'encombrement aussi.
Un bon moyen de penser aux canaux est comme func generate(c chan<- int) {
...
}
Bien que vous puissiez déclarer une variable de canal «en lecture seule» ou «écrire uniquement», il est inutile de le faire, car vous ne pouvez rien faire avec eux. p>
La syntaxe "en lecture seule" et "écrire uniquement" est pour les paramètres de fonction. Cette syntaxe ressemble davantage à "const" en C ou "dans" et "Out" dans Ada. p>
NOR Les canaux de go ont deux "extrémités". Les tuyaux Unix ont deux descripteurs de fichier, un pour chaque extrémité. La même variable de type de canal est utilisée à la fois pour la lecture et l'écriture. p>