go 是否有允许的最大函数返回数

rob*_*y22 -1 return go

使用golang的多次返回功能,是否有返回限制?或者假设内存大小不是问题,用户是否可以假设有数百万个函数返回。

Mar*_*ois 7

理论上,没有限制。

https://golang.org/ref/spec#ExpressionList

在实践中,当然,它会在某些时候失败。

1000 个输出参数:https : //play.golang.org/p/pOf4YCahtER

在我的计算机上,我能够使用 Go 1.11.5 将其推送到 8190 个输出参数。输出列表是一系列is ( type i int),而 return 语句包含一系列0s。

更改为类型名称以ii降低我能够达到的最大值。这表明限制来自表示输出参数的字符串的长度,而不是列表中的元素数量。

当列表太长时,这似乎是返回的错误:https : //github.com/golang/go/blob/ed15e82413c7b16e21a493f5a647f68b46e965ee/src/cmd/compile/internal/gc/reflect.go#L544