以下代碼:package mainimport "fmt"// fibonacci is a function that returns// a function that returns an int.func fibonacci() func() int { first, second := 0, 1 return func() int { // return next fibonacci number here. first, second = second, first+second return first } }func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) }}返回斐波那契數列的 10 個數字。讓我感到困惑的是為什么有效。似乎 first 和 second 的值以某種方式保存在內存中,因為每次執行代碼時,都會返回一個新的斐波那契數,并與前一個順序排列。我認為函數在執行完后會丟失它們記住的變量。這里發生了什么?
- 1 回答
- 0 關注
- 215 瀏覽
添加回答
舉報
0/150
提交
取消