伟大伟大

[A Tour of Go]Exercise: Fibonacci closure

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 (0, 1, 1, 2, 3, 5, ...).

package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
	a := 0
	b := 1
	return func() int {
		t := a
		a = b
		b = t + b
		return t
	}
}

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

posted @ 2021-03-03 22:47  wooHsi  阅读(77)  评论(0编辑  收藏  举报