Go 函数式编程
函数式编程的一个重要特性是「函数是第一等公民」,本文以 Go 为例解释这个概念,之后介绍高阶函数、匿名函数、闭包等概念,最后介绍一些标准库和项目中的实践例子。
函数是第一等公民
先看一个普通变量赋值的例子
v := 100
fmt.Printf("value %v type %T\n", v, v)
输出
value 100 type int
如果我们将变量改为函数呢,比如
fn := func(x int) int { return x * x }
fmt.Printf("value %v type %T\n", fn, fn)
输出
value 0x10a8da0 type func(int) int
这里说明函数也可以赋值给变量。
所谓「函数是第一等公民」,也就是函数与其他数据类型一样,处于平等地位,可以
- 赋值给同类型变量
- 作为入参传递给函数
- 作为函数的返回结果