henryspace

记录精彩的程序人生 开始使用

Part 18 - Go 语言学习 - 函数与闭包

函数与闭包

1.函数式编程 vs 函数指针

  • 函数是一等公民:参数,变量,返回值都可以是函数
  • 高阶函数(函数的参数可以是函数)
  • 函数 -> 闭包
  1. “正统”函数式编程
  • 不可变性:不能有状态,只有常量和函数
  • 函数只能有一个参数
  • go语言不做上述严格规定
import "fmt"

// 闭包函数,返回值是一个闭包,返回一个对自身的调用
func  adder() func(int) int {
	sum := 0
	return func(v int) int {
		sum += v
		return sum
	}
}

func main () {
	a := adder()
	for i := 0; i < 10; i++ {
		fmt.Println(i, a(i))
	}
}
//结果:
0 0
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45

评论
留下你的脚步