Solution: count words from file
examples/count-words-from-file/count_words_from_file.go
package main import ( "bufio" "fmt" "os" "sort" "strings" ) func main() { filename := "words_and_spaces.txt" fmt.Println(filename) fh, err := os.Open(filename) if err != nil { fmt.Printf("Could not open file '%v': %v", filename, err) os.Exit(1) } reader := bufio.NewReader(fh) counter := make(map[string]int) for { line, _ := reader.ReadString('\n') //fmt.Print(line) fields := strings.Fields(line) //fmt.Println(fields) for _, word := range fields { word = strings.ToLower(word) counter[word]++ } if line == "" { break } } // for word, cnt := range counter { // fmt.Printf("%v %v\n", word, cnt) // } words := make([]string, 0, len(counter)) for word := range counter { words = append(words, word) } sort.Slice(words, func(i, j int) bool { return counter[words[i]] > counter[words[j]] }) for _, word := range words { fmt.Printf("%v %v\n", word, counter[word]) } }