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
}

上記のコードでは、addfunction は 2 つの引数を受け取り、それらの合計を返す通常の関数です。

curryAdd関数は、匿名関数を返すクロージャです。この無名関数は引数を受け取り、その引数をcurryAdd関数、結果を返します。

mainfunctionでは、curryAdd(5)新しい関数を作成するために呼び出しますadd5add5関数は によってcurryAdd(5)返される、5最初の引数としてadd関数ます。次に、第 2 引数としてadd5(10)渡される関数を呼び出し、結果を取得します。10add

クロージャを使用してカリー化を実装すると、事前に関数のパラメータを部分的に適用して新しい関数を生成し、残りのパラメータを渡すだけで済むため、コードがより柔軟で再利用可能になります。

おすすめ

転載: blog.csdn.net/a772304419/article/details/131148491