题目描述

实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 (0, 1, 1, 2, 3, 5, ...)

Code

package main

import "fmt"

// 返回一个“返回int的函数”
func fibonacci() func() int {
	m, n := 0, 1
	return func() int {
		tmp := m
		m, n = n, (m + n)
		return tmp
	}
}

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

运行结果:

0
1
1
2
3
5
8
13
21
34

详见https://tour.go-zh.org/moretypes/26