首页 > 解决方案 > go 是否有最大数量的允许函数返回

问题描述

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

标签: goreturn

解决方案


理论上,没有限制。

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


推荐阅读