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条)

报告相同问题?

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起