首页 > 代码库 > A Tour of Go Exercise: Fibonacci closure

A Tour of Go Exercise: Fibonacci closure

Let‘s have some fun with functions.

Implement a fibonacci function that returns a function (a closure) that returns successive fibonacci numbers.

package mainimport "fmt"// fibonacci is a function that returns// a function that returns an int.func fibonacci() func() int {    before := 0    now := 0    return func() int {        if before == 0 {            before++            return before        }        if now == 0 {            now++            return now        }        temp := now        now = before + now        before = temp        return now     }}func main() {    f := fibonacci()    for i := 0; i < 10; i++ {        fmt.Println(f())    }}

 

A Tour of Go Exercise: Fibonacci closure