Verschiedene Möglichkeiten zum übergeben von Kanälen, die als Argumente in der Funktion go (golang)

Las ich einige code gehen und sagen, ein paar verschiedene Möglichkeiten, um pass go-Kanäle. Vielleicht sind Sie das gleiche, aber ich Frage mich, ob es einen Unterschied, da ich nicht finden konnte, Dokumentation online:

1)

func serve(ch <-chan interface{}){ //do stuff }

2)

func serve(ch chan<- interface{}){ //do stuff }

3)

func serve(ch chan interface{}){ //do stuff }

4)

func server(ch *chan interface{}){ //do stuff}

Ich Frage mich, was der Unterschied zwischen Ihnen waren und wenn waren Sie nur gleichwertige Möglichkeiten, das gleiche zu tun: übergeben wird ein Kanal rund um verschiedene goroutines.

HINWEIS: ich bin mir bewusst, dass es keinen Grund gibt, übergeben Sie einen Zeiger auf einen chan, Karte oder Scheibe, oder die Funktion Wert, da sind alle Referenz-Typen, die intern enthalten einen Zeiger (die Ausnahme würde sein, wenn Sie möchten, dass der angerufene zur änderung der Referenz-type-header). Der einzige Grund, warum ich, sofern es der Vollständigkeit halber (d.h., um wirklich jede Art und Weise ein Kanal, könnte versucht werden, die als parameter übergeben und um auf die Frage, hoffentlich, Referenzen alle Möglichkeiten, dies zu tun und vergleicht diese).

InformationsquelleAutor der Frage Charlie Parker | 2014-07-21

Schreibe einen Kommentar