From 6fe051eea5ebd119fa48feedb0a0ec60d1e4420b Mon Sep 17 00:00:00 2001 From: erius Date: Thu, 6 Jun 2024 02:15:25 +0300 Subject: [PATCH] Minor code refactors in some tasks --- fetchall/main.go | 22 ++++++++-------------- forth/eval.go | 7 +++---- hogwarts/courselist.go | 2 +- speller/speller.go | 35 +++++++++++++++++------------------ urlfetch/main.go | 2 +- 5 files changed, 30 insertions(+), 38 deletions(-) diff --git a/fetchall/main.go b/fetchall/main.go index 29783d6..b385784 100644 --- a/fetchall/main.go +++ b/fetchall/main.go @@ -27,36 +27,30 @@ func (result HTTPGetResult) String() string { } } -func GetHTTPBody(url string, ch chan HTTPGetResult) { +func GetHTTPBody(url string, ch chan string) { startTime := time.Now() resp, err := http.Get(url) if err != nil { - ch <- HTTPGetResult{Success: false, Error: err} + ch <- fmt.Sprint(err) return } defer resp.Body.Close() - data, err := io.ReadAll(resp.Body) + n, err := io.Copy(io.Discard, resp.Body) if err != nil { - ch <- HTTPGetResult{Success: false, Error: err} + ch <- fmt.Sprint(err) return } - ch <- HTTPGetResult{ - Success: true, - Body: string(data), - Elapsed: time.Since(startTime), - Size: len(data), - URL: url, - } + ch <- fmt.Sprintf("%.2fs\t%v\t%v", time.Since(startTime).Seconds(), n, url) } func main() { startTime := time.Now() - urls, ch := os.Args[1:], make(chan HTTPGetResult) + urls, ch := os.Args[1:], make(chan string) for _, url := range urls { go GetHTTPBody(url, ch) } - for i := 0; i < len(urls); i++ { + for range urls { fmt.Println(<-ch) } - fmt.Println(time.Since(startTime), "elapsed") + fmt.Printf("%.2fs elapsed\n", time.Since(startTime).Seconds()) } diff --git a/forth/eval.go b/forth/eval.go index aeead67..12ffd77 100644 --- a/forth/eval.go +++ b/forth/eval.go @@ -41,7 +41,7 @@ func (e *Evaluator) arithmeticOp(op func(int, int) int) func() error { return func() error { a, b, err := e.popTwo() if err != nil { - return errors.New("not enough elements on stack") + return err } e.push(op(a, b)) return nil @@ -55,7 +55,7 @@ func (e *Evaluator) initBasicWords() { e.words["/"] = func() error { a, b, err := e.popTwo() if err != nil { - return errors.New("not enough elements on stack") + return err } if b == 0 { return errors.New("division by zero") @@ -110,8 +110,7 @@ func (e *Evaluator) getFunc(word string) (func() error, error) { } func (e *Evaluator) defineWord(word string, def string) error { - _, err := strconv.Atoi(word) - if err == nil { + if _, err := strconv.Atoi(word); err == nil { return errors.New("word definition must not be numeric") } definitionWords := strings.Fields(def) diff --git a/hogwarts/courselist.go b/hogwarts/courselist.go index e2c947a..89990be 100644 --- a/hogwarts/courselist.go +++ b/hogwarts/courselist.go @@ -11,7 +11,7 @@ func singleCourseList( course string, prereqs map[string][]string, list []string, traversed []string, ) []string { if slices.Contains(traversed, course) { - log.Panic("Recursive prereqs, aborting...") + log.Panic("recursive prereqs, aborting...") } traversed = append(traversed, course) for _, prereqCourse := range prereqs[course] { diff --git a/speller/speller.go b/speller/speller.go index 93f6f66..95818a6 100644 --- a/speller/speller.go +++ b/speller/speller.go @@ -6,24 +6,23 @@ import ( "strings" ) -var digits = []string{ - "", "one", "two", "three", "four", "five", - "six", "seven", "eight", "nine", -} - -var teens = []string{ - "ten", "eleven", "twelve", "thirteen", "fourteen", - "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", -} - -var decs = []string{ - "", "", "twenty", "thirty", "forty", "fifty", - "sixty", "seventy", "eighty", "ninety", -} - -var large = []string{ - "billion", "million", "thousand", -} +var ( + digits = []string{ + "", "one", "two", "three", "four", "five", + "six", "seven", "eight", "nine", + } + teens = []string{ + "ten", "eleven", "twelve", "thirteen", "fourteen", + "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", + } + decs = []string{ + "", "", "twenty", "thirty", "forty", "fifty", + "sixty", "seventy", "eighty", "ninety", + } + large = []string{ + "billion", "million", "thousand", + } +) func digitsReversedSlice(n int64) []uint8 { digits := make([]uint8, 12) diff --git a/urlfetch/main.go b/urlfetch/main.go index a14fb4f..abd6366 100644 --- a/urlfetch/main.go +++ b/urlfetch/main.go @@ -22,6 +22,6 @@ func main() { if err != nil { log.Panic("fetch:", err) } - fmt.Println(string(body)) + fmt.Printf("%s", body) } }