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 (0, 1, 1, 2, 3, 5, …).

exercise-fibonacci-closure.go

  1. package main
  2. import "fmt"
  3. // fibonacci is a function that returns
  4. // a function that returns an int.
  5. func fibonacci() func() int {
  6. }
  7. func main() {
  8. f := fibonacci()
  9. for i := 0; i < 10; i++ {
  10. fmt.Println(f())
  11. }
  12. }