示例:使用闭包实现函数柯里化
下面是一个使用闭包来实现柯里化的代码示例:
package main
import "fmt"
// add 函数是一个普通的函数,接收两个参数并返回它们的和
func add(a, b int) int {
return a + b
}
// curryAdd 函数是一个闭包,用于实现柯里化
func curryAdd(a int) func(int) int {
// 在闭包内部定义一个匿名函数,接收一个参数并返回两个参数的和
return func(b int) int {
return add(a, b)
}
}
func main() {
使用柯里化函数创建新的函数
//add5 := curryAdd(5)
//
调用新函数,传入参数并获取结果
//result := add5(10)
result :=curryAdd(5)(10)
fmt.Println(result) // 输出 15
}
在上述代码中,add
函数是一个普通的函数,用于接收两个参数并返回它们的和。
curryAdd
函数是一个闭包,它返回一个匿名函数。该匿名函数接收一个参数,并将该参数与 curryAdd
函数的参数进行相加,并返回结果。
在 main
函数中,我们调用 curryAdd(5)
来创建一个新的函数 add5
。add5
函数是 curryAdd(5)
返回的闭包,它会将 5
作为第一个参数传递给 add
函数。然后,我们调用 add5(10)
,将 10
作为第二个参数传递给 add
函数,并获取结果。
通过使用闭包实现柯里化,我们可以事先部分应用函数的参数,生成一个新的函数,后续只需要传入剩余的参数即可,使得代码更加灵活和可复用。