【发布时间】:2018-10-04 19:23:10
【问题描述】:
我有一个返回两个整数值的 Go 函数。下面是函数
func temp() (int, int){
return 1,1
}
是否可以将temp 函数直接放入Println 并使用如下字符串格式打印两个输出:
fmt.Println("first= %d and second = %d", temp() ) // This doesn't work
在 Python 中,我可以执行以下操作:
def func():
return 1,1
print("{0}={1}".format(*func())
>> '1=2'
我也可以在 Go 中做类似的事情吗?
【问题讨论】:
-
或,但不能同时使用。 := 只是编译器推断分配类型的语法糖。
-
呃,我不认为“多值表达式解构”与静态类型有任何关系。但我想对一个人来说显而易见的事情对其他人来说并不总是显而易见的,尤其是新手......
-
@RayfenWindspear 是的,这似乎是 go 语言设计者的故意选择,而不是类型系统严格性的强制要求。感谢您的跟进,我不知道该示例是否可行!
-
@maerics 似乎适用于函数采用可变参数接口{} 以及类型完全匹配的情况。直到。 play.golang.org/p/Tbja3KNZO_W
-
我找到了一篇深度文章,它本身就值得回答,但是在这里只用链接回答问题是无效的,所以我将它放在这里。 medium.com/golangspec/…
标签: go return-value variadic multiple-return-values