Go 函数式的代码示范

31 min read

以下是一个简单的 Go 函数式代码示例:

package main

import (
	"fmt"
)

// 定义一个函数类型“IntOp”,接收两个 int 类型的参数并返回一个 int
type IntOp func(int, int) int

// 定义一个高阶函数“ApplyIntOp”,接收一个 IntOp 类型的参数和两个 int 类型的参数,
// 并返回用 IntOp 对两个 int 参数进行操作的结果
func ApplyIntOp(op IntOp, a, b int) int {
	return op(a, b)
}

func main() {
	// 定义一个加法操作函数“Add”
	Add := func(a, b int) int {
		return a + b
	}

	// 定义一个减法操作函数“Subtract”
	Subtract := func(a, b int) int {
		return a - b
	}

	// 定义一个乘法操作函数“Multiply”
	Multiply := func(a, b int) int {
		return a * b
	}

	// 使用“ApplyIntOp”高阶函数调用“Add”、“Subtract”、“Multiply”函数
	fmt.Println(ApplyIntOp(Add, 3, 4))        // 输出 7
	fmt.Println(ApplyIntOp(Subtract, 3, 4))   // 输出 -1
	fmt.Println(ApplyIntOp(Multiply, 3, 4))   // 输出 12
}

在这个示例中,我们定义了一个函数类型“IntOp”,并定义了三个具体的函数类型“Add”、“Subtract”和“Multiply”。我们还定义了一个高阶函数“ApplyIntOp”,它接收一个 IntOp 类型的参数和两个 int 类型的参数,并返回用 IntOp 对两个 int 参数进行操作的结果。

在 main 函数中,我们使用“ApplyIntOp”高阶函数调用“Add”、“Subtract”和“Multiply”函数,并打印出它们的结果。

这个示例展示了 Go 中函数式编程风格的基本特点。我们通过定义函数类型和高阶函数,使得我们可以使用参数化的方式进行函数操作,从而实现更加灵活和可复用的代码。