Coroutine digunakan untuk komunikasi dalam Go Channels ialah mekanisme asas untuk menghantar dan menerima data antara coroutine. Coroutine boleh menghantar data ke atau menerima data daripada saluran dengan menggunakan pengendali hantar (<-) dan terima (<-). Kes praktikal: Penjumlahan selari, menunjukkan penggunaan coroutine dan saluran untuk mengira jumlah nombor secara selari, menghantar jumlah separa ke saluran, dan kemudian menerima dan mencetaknya oleh coroutine utama.
Gunakan coroutine Golang untuk komunikasi
Dalam bahasa Go, coroutine menyediakan cara pengaturcaraan serentak yang ringan dan cekap. Mereka membenarkan berbilang tugasan dilaksanakan secara serentak dalam konteks satu utas, dengan itu meningkatkan prestasi aplikasi. Komunikasi antara coroutine adalah penting untuk menyelaraskan tugas dan berkongsi data.
Saluran
Dalam Go, saluran ialah mekanisme asas untuk menghantar dan menerima data antara coroutine. Saluran ialah baris gilir tidak buffer atau buffer yang digunakan untuk menyampaikan nilai. Untuk mencipta saluran, anda boleh menggunakan sintaks berikut:
ch := make(chan T)
di mana T
ialah jenis elemen dalam saluran. 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🎜🎜Terima data daripada saluran🎜🎜🎜Untuk menerima data daripada saluran, anda boleh menggunakan <code> 🎜Dalam contoh ini, kami mencipta 5 coroutine, setiap coroutine menggunakan saluran <code>ch
untuk mengira jumlah separa. Coroutine utama bertanggungjawab untuk menerima jumlah separa ini dan mencetaknya ke konsol. 🎜Atas ialah kandungan terperinci Bagaimana untuk berkomunikasi menggunakan coroutine Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!