コルーチンは Go の通信に使用されます。チャネルはコルーチン間でデータを送受信するための基本的なメカニズムです。コルーチンは、送信 (
通信に Golang コルーチンを使用する
Go 言語では、コルーチンは軽量で効率的な同時プログラミングの方法を提供します。これらにより、単一スレッドのコンテキスト内で複数のタスクを同時に実行できるようになり、アプリケーションのパフォーマンスが向上します。コルーチン間の通信は、タスクを調整したりデータを共有したりするために重要です。
チャネル
Go では、チャネルはコルーチン間でデータを送受信するための基本的なメカニズムです。チャネルは、値を配信するために使用されるバッファなしまたはバッファ付きのキューです。チャネルを作成するには、次の構文を使用できます:
ch := make(chan T)
ここで、T
はチャネル内の要素のタイプです。 T
是通道中的元素类型。
发送数据到通道
要向通道发送数据,可以使用 <-
操作符:
ch <- data
从通道接收数据
要从通道接收数据,可以使用 <-
操作符:
data := <-ch
实战案例:并行求和
为了演示协程通信,让我们编写一段程序来使用协程并行求和一组数字:
package main import ( "fmt" "sync" ) func sum(a []int, ch chan int) { sum := 0 for _, v := range a { sum += v } ch <- sum } func main() { a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ch := make(chan int) var wg sync.WaitGroup for i := 0; i < 5; i++ { start := i * 2 end := start + 2 wg.Add(1) go sum(a[start:end], ch) } go func() { for i := 0; i < 5; i++ { total := <-ch fmt.Println("Partial sum:", total) } wg.Done() }() wg.Wait() }
在这个示例中,我们创建了 5 个协程,每个协程使用通道 ch
<-
演算子を使用できます: 🎜rrreee🎜🎜チャネルからデータを受信します🎜🎜🎜からデータを受信するにはチャネルには <code> を使用できます 🎜 この例では 5 つのコルーチンを作成し、各コルーチンはチャネル <code>ch
を使用して部分和を計算します。メイン コルーチンは、これらの部分合計を受信し、コンソールに出力する役割を果たします。 🎜以上がGolang コルーチンを使用して通信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。