package main import "fmt" func fibonacci() func() int { previous := 0 current := 0 result := 0 return func() int { if current == 0 { current = 1 } else if current == 1 && result == 0 { result = current } else { result = previous + current previous = current current = result } return result } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }