dq8081 2013-10-31 05:11
浏览 41
已采纳

如何使函数支持一两个返回值

in go tutorial following code is often seen:

a := foo()
b, c := foo()

or actually what I see is:

m["Answer"] = 48
a := m["Answer"]
v, ok := m["Answer"]

how many foo() is defined?

Is it two, one with one return type, another with two return type?

Or just one foo() with two return type defined, and somehow magically when only need one return value (a := foo()), another return value is omitted?

I tried

package main

func main() {
    a := foo()
    a = 1
}

func foo() (x, y int) {
    x = 1
    y = 2
    return
}

func foo() (y int) {
    y = 2
    return
}

But I got error message foo redeclared in this block

  • 写回答

2条回答 默认 最新

  • drztpx8735 2013-10-31 05:38
    关注

    While some built in operations support both single and multiple return value modes (like reading from a map, type assertions, or using the range keyword in loops), this feature is not available to user defined functions.

    If you want two versions of a function with different return values, you will need to give them different names.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?