簡體   English   中英

在golang頻道中未收到

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM