1). 函数也是值,可以像普通值那样,传来传去;
2). 匿名函数;
3). 函数的类型,类似于:func(float64,float64) float64
==========================
1). 在函数式程序设计语言中,闭包都是个重要的玩意;
2). 闭包有时候让人赶脚捉摸不透;
3). 例子中 sum 的作用域、生命周期;实际上在一个函数内部返回一个匿名函数/闭包,如果这个返回函数使用了原来函数内的变量值,那么这些变量的生命周期便延长了;这不是 c 的风格,c 中的管你返回神马东西,局部 auto 变量函数返回后就消亡了(当然你可以使用 static 变量)!
package main import ( "fmt" "math" ) func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } } func main() { hypot := func(x, y float64) float64 { return math.Sqrt(x*x + y*y) } fmt.Printf("%T %g", hypot, hypot(3, 4)) pos, neg := adder(), adder() for i := 0; i < 10; i++ { fmt.Println(pos(i), neg(-2*i),) } }
时间: 2024-10-03 13:05:43