登录
首页 >  Golang >  Go问答

从 goroutine 中捕获返回值

来源:Golang技术栈

时间:2023-05-01 08:06:20 210浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《从 goroutine 中捕获返回值》,以下内容主要包含golang等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

下面的代码给出了编译错误,说'unexpected go':

x := go doSomething(arg)

func doSomething(arg int) int{
    ...
    return my_int_value
}

我知道,如果我正常调用函数,即不使用 goroutine 或者我可以使用通道等,我可以获取返回值。

我的问题是为什么不能从 goroutine 中获取这样的返回值。

正确答案

严格的答案是你 可以 做到这一点。这可能不是一个好主意。这是可以做到这一点的代码:

var x int
go func() {
    x = doSomething()
}()

这将产生一个新的 goroutine,它将计算doSomething()然后将结果分配给x. 问题是:你将如何使用x原来的 goroutine?您可能希望确保生成的 goroutine 已完成,这样您就不会遇到竞争条件。但是如果你想这样做,你需要一种与 goroutine 通信的方法,如果你有办法做到这一点,为什么不直接用它来发送值呢?

本篇关于《从 goroutine 中捕获返回值》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>