fibonacci_closure.go 341 B

1234567891011121314151617181920
  1. package main
  2. // fib returns a function that returns
  3. // successive Fibonacci numbers.
  4. func fib() func() int {
  5. a, b := 1, 1
  6. return func() int {
  7. a, b = b, a+b
  8. return b
  9. }
  10. }
  11. func main() {
  12. f := fib()
  13. // Function calls are evaluated left-to-right.
  14. // println(f(), f(), f(), f(), f())
  15. for i := 0; i <= 9; i++ {
  16. println(i+2, f())
  17. }
  18. }