blob: 19e4721028685f99d54eec4719001d2544afd3d8 [file] [log] [blame]
Andrew Gerrandd528f522012-03-15 17:44:47 +11001package main
2
Brad Fitzpatricka5e10ed2012-11-26 13:05:18 -08003import "fmt"
4
Andrew Gerrandd528f522012-03-15 17:44:47 +11005// fib returns a function that returns
6// successive Fibonacci numbers.
7func fib() func() int {
8 a, b := 0, 1
9 return func() int {
10 a, b = b, a+b
11 return a
12 }
13}
14
15func main() {
16 f := fib()
17 // Function calls are evaluated left-to-right.
Brad Fitzpatricka5e10ed2012-11-26 13:05:18 -080018 fmt.Println(f(), f(), f(), f(), f())
Andrew Gerrandd528f522012-03-15 17:44:47 +110019}