练习:斐波纳契闭包!
我模仿前一节把代码写出来但是我还是不懂什么是闭包,这个和怎么感觉就像静态变量啊!求解释下谢谢.
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
cur,next:=0,1
return func() int{
cur,next=next,cur+next
return cur
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
[fibonacci.png](https://static.studygolang.com/180210/67a82bc29ea96a4c84b1aad78f18a8ee.png)
更多评论
闭包在 JavaScript 中就是函数加上了词法作用域,在这个例子中,是把
```
func() int{ cur,next=next,cur+next return cur }
```
和 cur next 结合在一起,作为
```
f := fibonacci()
```
的返回值,也就是 f 本身是带着 cur next 这两个变量的。
这样,你循环多次调用的时候, cur next 就不停地更改增加了。
#1