短格式goroutine返回值

短格式goroutine返回值,go,Go,我用围棋已经有一段时间了。我想知道是否有任何简短的代码可以从goroutine获取返回值 x:=3 ch:=制造(成交量) go func(xIn int)(xOut int){ xOut=x+1 ch让我们假设存在一些返回类型为T的函数f() 您希望捕获f()的返回值。显然,我们可以使用: x := f() 如果: 等待f() (如果: 不等待f()返回值,当您尝试访问变量x时会发生什么情况?) 如果你想写: x := 3 nextX := func(xIn int) (xOut int)

我用围棋已经有一段时间了。我想知道是否有任何简短的代码可以从goroutine获取返回值

x:=3
ch:=制造(成交量)
go func(xIn int)(xOut int){
xOut=x+1

ch让我们假设存在一些返回类型为
T
的函数
f()

您希望捕获
f()
的返回值。显然,我们可以使用:

x := f()
如果:

等待
f()

(如果:

不等待
f()
返回
值,当您尝试访问变量
x
时会发生什么情况?)


如果你想写:

x := 3
nextX := func(xIn int) (xOut int) {
    xOut = x + 1
    return xOut
}(x)
fmt.Println(x, nextX)

您可以在Go中这样做,因为它现在已经存在。(在上尝试它。另外,我怀疑您希望内部函数使用其
xIn
变量,而不是捕获的闭包
x
变量,但效果是相同的。)

不,原因很简单,goroutine永远不会有任何返回值。goroutine不是函数。
x := go f()
x := 3
nextX := func(xIn int) (xOut int) {
    xOut = x + 1
    return xOut
}(x)
fmt.Println(x, nextX)