package main import "fmt" // fibonacci is a function that returns // a function that returns an int. // from cpython/Doc/build/html/library/functools.html // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610] func fibonacci() func() int { cur_fib := 0 nxt_fib := 0 return func() int { if nxt_fib == 0 { nxt_fib = 1 return 0 } tmp := cur_fib cur_fib = nxt_fib nxt_fib += tmp return cur_fib } } func main() { f := fibonacci() for i := 0; i < 20; i++ { fmt.Println(f()) } }