在 go 教程中经常看到以下代码:a := foo()b, c := foo()或者实际上我看到的是:m["Answer"] = 48a := m["Answer"]v, ok := m["Answer"]定义了多少个 foo()?是两种,一种具有一种返回类型,另一种具有两种返回类型?或者只是一个 foo() 定义了两个返回类型,当只需要一个返回值 ( a := foo())时,以某种方式神奇地省略了另一个返回值?我试过了package mainfunc 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
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
虽然一些内置操作支持单返回值模式和多返回值模式(例如从映射中读取、类型断言或在循环中使用 range 关键字),但用户定义的函数无法使用此功能。
如果您想要具有不同返回值的函数的两个版本,则需要为它们指定不同的名称。
- 2 回答
- 0 关注
- 209 浏览
添加回答
举报
0/150
提交
取消