Go - A Tour of Go Exercise: Fibonacci closure

ZhangZhihui's Blog / 2023-08-15 / 原文

package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
    f0, f1 := 0, 1
    return func() int {
        f := f0
        f0, f1 = f1, f+f1

        return f
    }
}

func main() {
    f := fibonacci()
    for i := 0; i < 10; i++ {
        fmt.Println(f())
    }
}