go-examples/file-wordcount/main.go

36 lines
587 B
Go
Raw Normal View History

2017-07-07 12:29:36 +00:00
package main
import "fmt"
import "io"
import "io/ioutil"
import "log"
import "os"
import "strings"
func wc(r io.Reader) map[string]uint {
words := make(map[string]uint)
if text, err := ioutil.ReadAll(r); err != nil {
log.Fatalln(err)
} else {
for _, word := range strings.Fields(string(text)) {
words[word]++
}
}
return words
}
func openFile(path *string) *os.File {
f, err := os.Open(os.Args[1])
if err != nil {
log.Fatalln(err)
}
return f
}
func main() {
if len(os.Args) <= 1 {
log.Fatalln("Missing file")
}
f := openFile(&os.Args[1])
fmt.Println(wc(f))
}