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

在 go 教程中经常看到以下代码:


a := foo()

b, c := foo()

或者实际上我看到的是:


m["Answer"] = 48

a := m["Answer"]

v, ok := m["Answer"]

定义了多少个 foo()?


是两种,一种具有一种返回类型,另一种具有两种返回类型?


或者只是一个 foo() 定义了两个返回类型,当只需要一个返回值 ( a := foo())时,以某种方式神奇地省略了另一个返回值?


我试过了


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

}

但我收到错误信息 foo redeclared in this block


开满天机
浏览 210回答 2
2回答

茅侃侃

虽然一些内置操作支持单返回值模式和多返回值模式(例如从映射中读取、类型断言或在循环中使用 range 关键字),但用户定义的函数无法使用此功能。如果您想要具有不同返回值的函数的两个版本,则需要为它们指定不同的名称。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go