我想从函数fn()传递结果,将多个值返回到接受多个值的函数wantx().如果wantx()接受的值的数量与返回值的数量匹配,这似乎有效.例如,fn()返回2个值,而want2()接受2个值:
r:= want2( fn(5) ) // seems to work fine
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望fn()的返回值充当want3()的参数2和3,那么我得到一个错误:
r:= want3( 1, fn(5) ) // error: multiple-value fn() in single-value context
Run Code Online (Sandbox Code Playgroud)
如果want3()不是,那么want2()是多值上下文怎么样?
如何调用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!")
}
}
Run Code Online (Sandbox Code Playgroud)