From 7de645a7afb9c1cdad9ace1c05ed0c15cc0b9c4d Mon Sep 17 00:00:00 2001 From: "Stephen M. McQuay" Date: Thu, 2 Aug 2012 16:57:51 -0600 Subject: [PATCH] Accept an arg for the number of fibs to generate. --- exercises/03-fibonacci/fibonacci.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/exercises/03-fibonacci/fibonacci.go b/exercises/03-fibonacci/fibonacci.go index 2544afb..ede80f0 100644 --- a/exercises/03-fibonacci/fibonacci.go +++ b/exercises/03-fibonacci/fibonacci.go @@ -1,6 +1,13 @@ package main -import "fmt" +import ( + "flag" + "fmt" + "os" + "strconv" +) + +var usage string = "usage: " + os.Args[0] + " " // fibonacci is a function that returns // a function that returns an int. @@ -11,7 +18,7 @@ func fibonacci() func() int { nxt_fib := 0 return func() int { if nxt_fib == 0 { - nxt_fib = 1 + nxt_fib = 1 return 0 } tmp := cur_fib @@ -22,8 +29,18 @@ func fibonacci() func() int { } func main() { + flag.Parse() + if len(flag.Args()) != 1 { + fmt.Fprintln(os.Stderr, usage) + os.Exit(1) + } + count, err := strconv.Atoi(flag.Arg(0)) + if err != nil { + fmt.Fprintf(os.Stderr, "%s\n", err.Error()) + os.Exit(1) + } f := fibonacci() - for i := 0; i < 20; i++ { + for i := 0; i < count; i++ { fmt.Println(f()) } }