fib.go 306 B

12345678910111213141516171819
  1. package main
  2. import "fmt"
  3. // fib returns a function that returns
  4. // successive Fibonacci numbers.
  5. func fib() func() int {
  6. a, b := 0, 1
  7. return func() int {
  8. a, b = b, a+b
  9. return a
  10. }
  11. }
  12. func main() {
  13. f := fib()
  14. // Function calls are evaluated left-to-right.
  15. fmt.Println(f(), f(), f(), f(), f())
  16. }