go代码示例:使用闭包实现函数柯里化

示例:使用闭包实现函数柯里化

下面是一个使用闭包来实现柯里化的代码示例:

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) 来创建一个新的函数 add5add5 函数是 curryAdd(5) 返回的闭包,它会将 5 作为第一个参数传递给 add 函数。然后,我们调用 add5(10),将 10 作为第二个参数传递给 add 函数,并获取结果。

通过使用闭包实现柯里化,我们可以事先部分应用函数的参数,生成一个新的函数,后续只需要传入剩余的参数即可,使得代码更加灵活和可复用。

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/131148491