[英]go error - multiple-value fn() in single-value context
我想将返回多个值的函数 fn() 的结果传递给接受多个值的函数 wantx() 。 如果 wantx() 接受的值数量与返回值的数量匹配,这似乎有效。 例如, fn() 返回 2 个值,而 want2() 接受 2 个值:
r:= want2( fn(5) ) // seems to work fine
但是,如果我希望 fn() 的返回值充当 want3() 的参数 2 和 3,则会出现错误:
r:= want3( 1, fn(5) ) // error: multiple-value fn() in single-value context
want2() 如何成为多值上下文,而 want3() 不是?
我如何获得对 want3() 的调用?
这是完整的程序:
package sandbox
import "testing"
func want3(fac int, i int, ok bool) int {
if ok {
return i * fac * 2
}
return i * fac * 3
}
func want2(i int, ok bool) int {
if ok {
return i * 2
}
return i * 3
}
func fn(i int) (int, bool) {
return i, true
}
func TestCall(t *testing.T) {
// error: multiple-value fn() in single-value context
// r := want3(1, fn(5))
r := want2( fn(5) ) // works fine
if r != 10 {
t.Errorf("Call!")
}
}
见这里:
作为一种特殊情况,如果函数或方法 g 的返回参数数量相等并且可以单独分配给另一个函数或方法 f 的参数,那么调用 f(g(parameters_of_g)) 将在绑定返回值后调用 f g 到 f 的参数的顺序。
不允许函数调用的其他特殊情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.