将多值返回追加到 func 参数

  • 本文关键字:func 参数 追加 返回 go
  • 更新时间 :
  • 英文 :


是否可以压缩此操作?

a, b := obtain2Values()
c = ":)"
process3Values(a, b, c)

变成这样的东西?(我知道这并不完全有效,但我正在寻找替代方案,如果存在的话(

process3Values(obtain2Values(), ":)")

简而言之,恐怕不是。一般来说,Go 不太擅长"压缩"表达式,因为它返回多个返回值(想想错误(的方式,这些返回值不能作为一个组传递。这使得很难按照 C# 中的 Linq 或 JavaScript 中的 Lodash 实现链式函数表达式。您总是被迫单独处理不同的返回值。它使 Go 写起来相当费力,但也非常明确,这就是意图——避免错误。

这有效:

package main
import "fmt"
func obtain2Values() (int, int) {
return 1, 2
}
func process3Values(a, b int, c string){
fmt.Printf("%v %v %vn", a, b, c)
}
func main() {
a, b := obtain2Values()
process3Values(a, b,":)")
// process3Values(obtain2Values(), ":)")
}

process3Values(acquire2Values((, ":)"( 不起作用:

./prog.go:16:16: not enough arguments in call to process3Values
./prog.go:16:30: multiple-value obtain2Values() in single-value context

最新更新