小编典典

为什么我的goroutine不执行?

go

我正在学习Go,并且想尝试goroutine和频道。

这是我的代码:

package main
import "fmt"
func main(){

messages := make(chan string,3)

messages <- "one"
messages <- "two"
messages <- "three"

go func(m *chan string) {
    fmt.Println("Entering the goroutine...")
    for {
        fmt.Println(<- *m)
    }
}(&messages)

fmt.Println("Done!")
}

结果如下:

Done!

我不明白为什么我的goroutine永远不会执行。没有输入“进入goroutine”,并且没有任何错误消息。


阅读 618

收藏
2020-07-02

共1个答案

小编典典

事实是您的goroutine开始执行,但是在执行任何操作之前就结束了,因为您的程序在打印后立即停止Done!:goroutine的执行与主程序无关,但是将在与程序相同的位置处停止。因此,基本上,您需要一些使程序等待它们的过程。它可能是另一个等待大量消息sync.WaitGroup,或其他技巧的通道。

您应该在golang博客中阅读有关并发性的出色文章。

2020-07-02