[英]Not receiving in the golang channel
在下面的示例中,我在匿名go例程中向“ mq”字符串通道發送“ ping”,並嘗試在四個dequeue() goroutines中接收這些字符串,不知道為什么它不打印任何內容
$ cat channels2.go
...
var mq chan string
func main() {
mq = make(chan string)
for i := 0; i < 4; i++ {
go dequeue()
}
go func() {
for i := 0; ; i++ {
mq <- "ping"
}
}()
}
func dequeue() {
for m := range mq {
fmt.Println(m)
}
}
$ go run channels2.go
$
主goroutine返回后,程序立即退出。 因此,您需要確保不早從main
回來。 一種方法是在主goroutine中執行對通道的寫循環:
var mq chan string
func main() {
mq = make(chan string)
for i := 0; i < 4; i++ {
go dequeue()
}
for {
mq <- "ping"
}
}
func dequeue() {
for m := range mq {
fmt.Println(m)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.