関数の引数としてチャンネルを渡すさまざまな方法
2023-08-31 03:11:49
質問
私はいくつかのgoのコードを読んでいて、goチャンネルを渡すためにいくつかの異なる方法を述べています。多分、それらは同じですが、私はオンラインでドキュメントを見つけることができなかったので、違いがあるのかどうか疑問に思っていました。
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}
私は、これらの違いは何なのか、そして、異なるゴルーチン間でチャネルを渡すという同じことをするための同等の方法であるのかどうか疑問に思っていました。
注: チャンネル、マップ、スライス、または関数値へのポインターを渡す理由がないことは承知しています。なぜなら、これらはすべて内部にポインターを含む参照型だからです (例外は、呼び出し側が参照型ヘッダーを変更したい場合です)。私がそれを提供した唯一の理由は、完全性のためです(つまり、チャンネルがパラメータとして渡されることを試みることができるあらゆる方法を実際に提供し、これを行うすべての方法を参照し、それらを比較することを望む質問について作成するためです)。
どのように解決するのですか?
これらは、異なる タイプ のチャンネルです。参照 http://golang.org/ref/spec#Channel_types . ポインタの件。一般的ではありませんが、関数内部からチャンネルを変更したい場合に便利かもしれません(実際に見たことはありません)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン