go lang 中的函数,有人可以帮我分解一下吗?
Functions in go lang, can someone please break this down for me?
当我偶然发现闭包时,我正在参观 golang,一件事导致另一件事,我降落在 https://www.calhoun.io/5-useful-ways-to-use-closures-in-go/
这里我被代码片段难住了
func makeFibGen() func() int {
f1 := 0
f2 := 1
return func() int {
f2, f1 = (f1 + f2), f2
return f1
}
}
有人可以给我分解一下并解释到底是怎么回事吗?
特别是这一行:
f2, f1 = (f1 + f2), f2
f2
被赋值 f1 + f2
,同时 f1
被赋值(原始值)f2
。因此,如果 f1, f2
之前是 3, 5
,那么之后它们将是 5, 8
(5, (3 + 5)
)。
这样,我们就得到了一个斐波那契生成器,因为每次调用内部函数时,都会返回前两个值的总和,并与前一个数字中较大的一个一起保存以备下次使用,构建下一个将它们加在一起将产生下一个斐波那契数,依此类推。
当我偶然发现闭包时,我正在参观 golang,一件事导致另一件事,我降落在 https://www.calhoun.io/5-useful-ways-to-use-closures-in-go/
这里我被代码片段难住了
func makeFibGen() func() int {
f1 := 0
f2 := 1
return func() int {
f2, f1 = (f1 + f2), f2
return f1
}
}
有人可以给我分解一下并解释到底是怎么回事吗? 特别是这一行:
f2, f1 = (f1 + f2), f2
f2
被赋值 f1 + f2
,同时 f1
被赋值(原始值)f2
。因此,如果 f1, f2
之前是 3, 5
,那么之后它们将是 5, 8
(5, (3 + 5)
)。
这样,我们就得到了一个斐波那契生成器,因为每次调用内部函数时,都会返回前两个值的总和,并与前一个数字中较大的一个一起保存以备下次使用,构建下一个将它们加在一起将产生下一个斐波那契数,依此类推。