A Tour of Go "moretypes/26"
フィボナッチ実装に5分位かかってもう廃業しようかもと思った。
package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { n := -1 fn := 0 fnP1 := 1 fnP2 := 0 return func() int { n += 1 if n == 0 { return 0 } else if n == 1 { return 1 } else { fnP2 = fn + fnP1 fn = fnP1 fnP1 = fnP2 return fnP2 } } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }