Bagaimana untuk melaksanakan baris gilir mesej dalam Goroutine? Gunakan fungsi buat untuk mencipta saluran tidak buffer. Gunakan operator <- untuk menghantar mesej. Gunakan operator -> untuk menerima mesej.
Bagaimana untuk melaksanakan baris gilir mesej dalam Goroutine?
Pengenalan
Goroutine dalam Go ialah primitif serentak ringan yang boleh digunakan untuk mencipta kod pelaksanaan selari. Baris gilir mesej ialah mekanisme komunikasi yang membolehkan Goroutines menghantar dan menerima mesej secara tidak segerak. Tutorial ini akan memperkenalkan cara menggunakan saluran untuk melaksanakan baris gilir mesej dalam Go dan menyediakan kes praktikal.
Melaksanakan baris gilir mesej
Saluran dalam Go ialah paip komunikasi dua hala yang boleh digunakan untuk memindahkan nilai antara Goroutines. Untuk membuat saluran, gunakan fungsi make
. Contohnya: make
函数。例如:
ch := make(chan int)
此代码创建一个无缓冲 channel,这意味着它一次只能容纳一个值。
发送消息
要发送消息,请使用 channel 的 <-
操作符。例如:
ch <- 42
此代码将值 42
发送到 channel。
接收消息
要接收消息,请使用 channel 的 ->
操作符。例如:
msg := <-ch
此代码将从 channel 接收一个值并将其存储在 msg
package main import "time" func main() { ch := make(chan int) go func() { for i := 0; i < 10; i++ { ch <- i time.Sleep(time.Second) } close(ch) }() }
Hantar mesej
Untuk menghantar mesej, gunakan operator<-
saluran. Contohnya: package main import "time" func main() { ch := make(chan int) go func() { for { msg, ok := <-ch if !ok { break } time.Sleep(time.Second) println(msg) } }() }
Terima mesej
Untuk menerima mesej, gunakan operator->
saluran. Contohnya: rrreee
Kod ini akan menerima nilai daripada saluran dan menyimpannya dalam pembolehubahmsg
. 🎜🎜🎜Kes Praktikal🎜🎜🎜Mari kita cipta aplikasi pengeluar-pengguna yang mudah, di mana pengeluar Goroutine akan menghantar mesej, dan pengguna Goroutine akan menerima dan memproses mesej ini. 🎜🎜🎜Kod pengeluar🎜🎜rrreee🎜🎜Kod pengguna🎜🎜rrreee🎜Dalam contoh ini, pengeluar menghantar satu mesej ke saluran setiap saat, dan pengguna menerima dan memproses mesej ini daripada saluran pada kekerapan yang sama . 🎜Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir mesej dalam Goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!