首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go错误-单值上下文中的多值fn()

go错误-单值上下文中的多值fn()
EN

Stack Overflow用户
提问于 2014-07-19 18:05:13
回答 1查看 3.3K关注 0票数 7

我希望将函数fn()返回多个值的结果传递给接受多个值的函数wantx()。如果wantx()接受的值数量与返回值的数量相匹配,这似乎是可行的。例如,fn()返回2个值,want2()接受2个值:

代码语言:javascript
复制
r:= want2( fn(5) )   // seems to work fine

但是,如果我希望fn()的返回值充当want3()的参数2和3,则会得到一个错误:

代码语言:javascript
复制
r:= want3( 1, fn(5) ) // error: multiple-value fn() in single-value context

want2()如何是多值上下文而want3()不是?

如何调用want3()来工作?

以下是完整的程序:

代码语言:javascript
复制
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!")
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-19 18:17:50

请参阅here

作为特例,如果一个函数或方法g的返回参数数目相等,并且单独分配给另一个函数或方法f的参数,则调用f(g(parameters_of_g))将g的返回值按顺序绑定到f的参数后调用f。 不允许函数调用的其他特殊情况。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24843422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档