【发布时间】:2022-01-06 07:41:02
【问题描述】:
假设我有斐波那契数的生成器,我想使用 enumerate(get_next_fibs(10)) 并且我想拥有对的生成器 index, number_from_generator,我正在努力寻找“命名返回值”的解决方案
这不是应该如何完成的,而是为了学习有关生成器的特定内容
package main
import "fmt"
func get_next_fibs(ii int) func() int {
i := 0
a, b := 0, 1
fc := func() int {
i++
a, b = b, a+b
if ii <= i {
return -1
}
return a
}
return fc
}
func enumerate(iter func() int) func() (index, v int) {
index := 0
fc := func() (index, v int) {
v := iter()
return
index++
}
return fc
}
func main() {
iter := enumerate(get_next_fibs(10))
// iter := get_next_fibs(10)
fmt.Printf("iter = %T\n", iter)
for tuple := iter(); tuple != -1; tuple = iter() {
fmt.Println("tuple:", tuple)
}
}
【问题讨论】:
-
get_next_fibs的行为应该是什么? -
@HymnsForDisco 如果您评论 main 的第一行和第二个 ucomment,那么程序将打印下一个 9 斐波那契