Goチャンネル


前書き

チャネルには、指定された型の値が含まれます。値はチャネルに書き込まれ、そこから読み取られ、先入れ先出しでチャネル内を循環します。いくつかのメッセージを含むことができるバッファリングされたチャネルとバッファされていないチャネルは区別できません。チャネルは通常、ゴルーチン間の通信に使用されますが、他の状況でも役立ちます。

構文

  • make(chan int)//バッファされていないチャンネルを作成する
  • make(chan int、5)//容量が5のバッファードチャネルを作成する
  • close(ch)//チャンネル "ch"を閉じます。
  • ch < - 1 //チャネル "ch"に1の値を書き込み、
  • val:= <-ch //チャンネル "ch"から値を読み込む
  • val、ok:= <-ch //別の構文。 okはチャンネルが閉じているかどうかを示すブールです

備考

空のstruct make(chan struct{})保持しているチャネルは、チャネル上に情報が送信されておらず、同期のために純粋に使用されているという明確なメッセージです。

バッファされていないチャネルに関しては、チャネル書き込みは、対応する読み出しが別のゴルーチンから発生するまでブロックされます。同じことは、ライターを待っている間のチャネルリードブロッキングにも当てはまります。

チャンネル 関連する例