jsh*_*ort 9 parameter-passing go
如果我有
func returnIntAndString() (i int, s string) {...}
Run Code Online (Sandbox Code Playgroud)
我有:
func doSomething(i int, s string) {...}
Run Code Online (Sandbox Code Playgroud)
然后我可以成功完成以下操作:
doSomething(returnIntAndString())
Run Code Online (Sandbox Code Playgroud)
但是,假设我想在doSomething中添加另一个参数:
func doSomething(msg string, i int, s string) {...}
Run Code Online (Sandbox Code Playgroud)
如果我将其称为:
doSomething("message", returnIntAndString())
Run Code Online (Sandbox Code Playgroud)
附:
main.go:45: multiple-value returnIntAndString() in single-value context
main.go:45: not enough arguments in call to doSomething()
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或者我应该放弃并将返回值分配returnIntAndString给一些引用并传递msg和这些值如doSomething(msg, code, str)?
Jim*_*imB 11
它在规范中描述.它需要内部函数为所有参数返回正确的类型.不允许额外的参数以及返回多个值的函数.
作为特殊情况,如果函数或方法g的返回值在数量上相等并且可以单独分配给另一个函数或方法f的参数,则调用f(g(parameters_of_g))将在绑定返回值后调用f g的顺序为f的参数.f的调用必须不包含除g的调用之外的参数,并且g必须至少具有一个返回值.如果f具有final ...参数,则为其分配在分配常规参数后保留的g的返回值.
Run Code Online (Sandbox Code Playgroud)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") }
如果不满足这些特定条件,则需要分配返回值并单独调用该函数.
| 归档时间: |
|
| 查看次数: |
4688 次 |
| 最近记录: |