将多值返回附加到 func 参数

是否可以压缩此操作?


a, b := obtain2Values()

c = ":)"


process3Values(a, b, c)

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


process3Values(obtain2Values(), ":)")


繁星淼淼
浏览 91回答 2
2回答

互换的青春

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

翻阅古今

这有效:package mainimport "fmt"func obtain2Values() (int, int) {        return 1, 2}func process3Values(a, b int, c string){    fmt.Printf("%v %v %v\n", a, b, c)}func main() {    a, b := obtain2Values()    process3Values(a, b,":)")    // process3Values(obtain2Values(), ":)")}process3Values(obtain2Values(), ":)") 不起作用:./prog.go:16:16: not enough arguments in call to process3Values./prog.go:16:30: multiple-value obtain2Values() in single-value context
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go