私はGo言語が初めてで、次のコードと混同しました
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
previous := 0
current := 1
return func () int{
current = current+previous
previous = current-previous
return current
}
}
func main() {
f := fibonacci
for i := 0; i < 10; i++ {
fmt.Println(f()())
}
}
このコードは、フィボナッチ数列 (最初の 10) を出力することになっていますが、10 回 1 しか出力しません。しかし、コードを次のように変更すると:
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
その後、正常に動作しています。出力はフィボナッチ数列です。
これを説明するのを手伝ってくれる人はいますか?
ありがとう