簡體   English   中英

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) ) 。

這樣,我們得到了一個斐波那契生成器,因為每次調用內部函數時,前兩個值的總和都會被返回並與前一個數字中較大的一個一起保存以備下次使用,構建下一對相加時將產生下一個斐波那契數,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM