如何在go中写出漂亮简洁的function closure
有个excercise,是写出fibonacci,用function closure
这个是几经周折后的答案
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
x, y := 0, 1
return func() int{
x, y = y, x+y
return y-x;
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
其实后来想想,想理解function closure, 就把它当成c/c++里的静态变量好了。
无非是通过这种特殊的所谓function closure绕了一个好大的圈子,估计跟实现有关吧。
后续深入的时候,再做研究