Go menggunakan saluran dan gorout untuk berkomunikasi. Selepas mencipta saluran, goroutine boleh menghantar dan menerima data ke saluran melalui operator
Komunikasi dengan goroutin melalui saluran dalam bahasa Go
Dalam bahasa Go, saluran ialah mekanisme konkurensi yang digunakan untuk komunikasi antara goroutin. Ia membolehkan goroutine bertukar data antara benang yang berbeza, membolehkan pengaturcaraan serentak berprestasi tinggi.
Buat saluran
Untuk mencipta saluran, anda boleh menggunakan fungsi make
: make
函数:
ch := make(chan int)
make
函数的第一个参数指定 channel 的数据类型。在上面的示例中,我们创建了一个整型 channel。
发送数据
要向 channel 发送数据,可以使用 <-
运算符:
ch <- 42
这会将值 42
发送到 channel 中。
接收数据
要从 channel 中接收数据,可以使用 <-
运算符:
v := <- ch
这会在 channel 中接收一个值并将其存储在变量 v
中。
实战案例
下面是一个实战案例,展示了如何使用 channel 让 goroutine 向主线程发送数据:
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup ch := make(chan int) // 启动一个 goroutine 来向 channel 发送数据 wg.Add(1) go func() { defer wg.Done() for i := 0; i < 10; i++ { ch <- i } close(ch) // 关闭 channel 以表示发送完成 }() // 从 channel 中接收数据并打印 for v := range ch { fmt.Println(v) } wg.Wait() // 等待 goroutine 完成 }
在这个示例中,我们创建一个 goroutine,它向 channel 发送 10 个值(0 到 9)。主 goroutine 从 channel 中接收数据并打印它。close(ch)
rrreee
make
Parameter pertama fungsi menentukan jenis data bagi saluran. Dalam contoh di atas, kami mencipta saluran integer. 🎜Menghantar data🎜🎜🎜Untuk menghantar data ke saluran, anda boleh menggunakan operator : 🎜rrreee🎜Ini akan menghantar nilai <code>42
ke saluran . 🎜🎜🎜Terima data🎜🎜🎜Untuk menerima data daripada saluran, anda boleh menggunakan operator : 🎜rrreee🎜Ini akan menerima nilai dalam saluran dan menyimpannya dalam pembolehubah <code> v
dalam. 🎜🎜🎜Kes praktikal🎜🎜🎜Berikut ialah kes praktikal yang menunjukkan cara menggunakan saluran untuk membenarkan goroutine menghantar data ke utas utama: 🎜rrreee🎜Dalam contoh ini, kami mencipta goroutine yang menghantar 10 nilai ( 0 hingga 9). Goroutine utama menerima data daripada saluran dan mencetaknya. Pernyataan close(ch)
digunakan untuk menutup saluran, menunjukkan bahawa goroutine telah menghantar semua data. 🎜🎜Dengan menggunakan saluran, kami boleh membenarkan goroutines bertukar-tukar data dengan mudah dalam urutan yang berbeza, dengan itu mencapai pengaturcaraan serentak yang cekap. 🎜Atas ialah kandungan terperinci Bagaimanakah fungsi golang berkomunikasi dengan goroutine melalui saluran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!