带回调函数的两个号码相加



以这种方式将两个数字相加的惯用方法是什么Add(5)(3)→这是在c#中完成的委托,但我不确定在Go中正确的方法是什么,因为没有delegate

返回一个函数,该函数从封闭作用域中获取第一个值,从参数中获取第二个值。

func Add(a int) func(int) int {
return func(b int) int {
return a + b
}
}
fmt.Println(Add(3)(5)) // prints 8

这些都不是习惯用语。习惯代码是3 + 5

在Go中这样做的习惯方法是不这样做。

Go对性能和过程性的强调意味着像curry这样的函数式模式是强烈的反惯用的。在Go中,两个数字相加的唯一习惯方法是:
sum := 5 + 3

可以用返回函数

的函数来实现它
func Add(val int) func(int) int {
return func (other int) int {
return val + other
}
}

但是你不应该。它增加了复杂性,降低了程序的速度,没有任何好处。

最新更新