Golang返回函数的值作为另一个的输入参数
如果我有
func returnIntAndString() (i int, s string) {...}
我有:
func doSomething(i int, s string) {...}
然后,我可以成功执行以下操作:
doSomething(returnIntAndString())
但是,假设我要在doSomething中添加另一个参数,例如:
func doSomething(msg string, i int, s string) {...}
如果我这样称呼,Go在编译时会抱怨:
doSomething("message", returnIntAndString())
带有:
main.go:45: multiple-value returnIntAndString() in single-value contextmain.go:45: not enough arguments in call to doSomething()
有没有办法做到这一点,还是我应该放弃并将返回值分配returnIntAndString
给某些引用,并将msg和这些值传递给doSomething(msg,
code, str)?
回答:
在规范中对此进行了描述。它要求内部函数返回所有参数的正确类型。没有多余的参数以及返回多个值的函数。
作为一种特殊情况,如果一个函数或方法g的返回值数量相等并且可以分别分配给另一个函数或方法f的参数,则调用f(g(parameters_of_g))将在绑定返回值后调用f
g到f的参数顺序。f的调用除g的调用外不得包含任何其他参数,并且g至少应具有一个返回值。如果f具有final
…参数,则会为其分配g的返回值,这些返回值在分配常规参数后仍保留。
func Split(s string, pos int) (string, string) {
return s[0:pos], s[pos:]
}
func Join(s, t string) string {
return s + t
}
if Join(Split(value, len(value)/2)) != value {
log.Panic("test fails")
}
如果不满足这些特定条件,则需要分配返回值并分别调用该函数。
以上是 Golang返回函数的值作为另一个的输入参数 的全部内容, 来源链接: utcz.com/qa/417497.html