Goroutine 执行异常
用户遇到了一个令人困惑的情况,他们的 goroutine 无法在 Go 程序中执行。尽管使用匿名函数创建了一个 goroutine 并将消息发送到主函数内的通道,但“输入 goroutine...”的预期输出并不存在。
检查提供的代码表明该 goroutine 确实是创建并将指针传递给消息通道。但问题出在程序后续的执行流程上。
缺少同步
最关键的问题是main函数和goroutine之间没有同步。程序在打印“Done!”后结束,没有提供任何机制让 goroutine 继续运行。
Go 允许 goroutine 与主程序并发执行。但是,如果 main 函数在 goroutine 完成任务之前退出,则 goroutine 将提前终止。
可能的解决方案
要解决此问题,程序必须实现同步机制确保 main 函数等待 goroutine 完成。这可以通过多种方法来实现:
进一步探索
Go 博客提供了一个优秀的了解 Go 中并发的资源,可以在以下链接找到:[Go 博客:并发](https://blog.golang.org/go-concurrency-patterns)。
以上是为什么我的 Go 程序中的 Goroutine 没有执行?的详细内容。更多信息请关注PHP中文网其他相关文章!