Browsed by
月份:2021年11月

Go 函数式编程

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

这里说明函数也可以赋值给变量。

所谓「函数是第一等公民」,也就是函数与其他数据类型一样,处于平等地位,可以

  • 赋值给同类型变量
  • 作为入参传递给函数
  • 作为函数的返回结果

阅读全文