summaryrefslogtreecommitdiff
path: root/doc/play/fib.go
diff options
context:
space:
mode:
Diffstat (limited to 'doc/play/fib.go')
-rw-r--r--doc/play/fib.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/play/fib.go b/doc/play/fib.go
new file mode 100644
index 000000000..42da9ce82
--- /dev/null
+++ b/doc/play/fib.go
@@ -0,0 +1,17 @@
+package main
+
+// fib returns a function that returns
+// successive Fibonacci numbers.
+func fib() func() int {
+ a, b := 0, 1
+ return func() int {
+ a, b = b, a+b
+ return a
+ }
+}
+
+func main() {
+ f := fib()
+ // Function calls are evaluated left-to-right.
+ println(f(), f(), f(), f(), f())
+}