背景:
Go 例程是在 Go 程序中并发执行的轻量级线程。当 Goroutine 创建时,它会运行指定的函数,并可能返回一个值。
问题:
从 Goroutine 返回值会发生什么?这些值可以在启动 goroutine 的父例程中捕获或使用吗?
答案:
在提供的示例中, getNumber 函数的返回值 i 为存储在堆栈中。此行为表明 goroutine 维护自己的变量堆栈。
但是,尽管有这种存储,但 goroutine 的返回值无法在 goroutine 本身之外检索或使用。这是因为 goroutine 在自己独特的堆栈中执行,这与主例程的堆栈不同。当 goroutine 完成时,它的堆栈将被销毁,返回值以及所有局部变量都会丢失。
结论:
外部无法访问 goroutine 的返回值定义它们的 goroutine。因此,通常建议避免从 goroutine 返回值,而是使用替代机制进行例程间通信,例如通道或共享内存。
以上是如何获取 Go Goroutine 的返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!