A Tour of Go chapter 45
Exercise: Fibonacci closure
Let's have some fun with functions.
Implement a fibonacci function that returns a function (a closure) that returns successive fibonacci numbers.
Example
package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { pre0 := 1 pre1 := 0 f := func() int { fib := pre0 + pre1 pre0 = pre1 pre1 = fib return fib } return f } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }