diff --git a/closures/go.mod b/closures/go.mod new file mode 100644 index 0000000..e092793 --- /dev/null +++ b/closures/go.mod @@ -0,0 +1,3 @@ +module main + +go 1.27.0 diff --git a/closures/main.go b/closures/main.go new file mode 100644 index 0000000..962248e --- /dev/null +++ b/closures/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" +) + +func fib() func() int { + a, b := 0, 1 + return func() int { + a, b = b, a+b + return b + } +} + +func main() { + f := fib() + for x := f(); x < 100; x = f() { + fmt.Println(x) + } +}