是否可以压缩此操作?a, b := obtain2Values()c = ":)"process3Values(a, b, c)变成这样的东西?(我知道这并不完全有效,但我正在寻找替代方案,如果存在的话)process3Values(obtain2Values(), ":)")
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
简而言之,恐怕不是。一般来说,Go 不太擅长“压缩”表达式,因为它返回多个返回值(想想错误)的方式,不能作为一个组传递。这使得很难按照 C# 中的 Linq 或 JavaScript 中的 Lodash 实现链式函数表达式。您总是被迫分别处理不同的返回值。它使 Go 编写起来相当费力,但也非常明确,这就是意图 - 避免错误。
翻阅古今
TA贡献1780条经验 获得超5个赞
这有效:
package main
import "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
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消