在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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),) } }
|
请发表评论