出現頻度は以下のようにすればカウントできます。
あとはソートですがご自分で考えてみたやってみた追記のあとで。
https://play.golang.org/p/sjDV88hRXPr
go
1package main
2
3import (
4 "bufio"
5 "bytes"
6 "fmt"
7 "strings"
8)
9
10var source = `
11I have a pen.
12I have an apple.
13Apple pen!
14I have a pen.
15I have a pineapple.
16Pineapple pen!
17`
18
19func main() {
20 count := map[string]int{}
21 scanner := bufio.NewScanner(bytes.NewBuffer([]byte(source)))
22 scanner.Split(bufio.ScanWords)
23 for scanner.Scan() {
24 word := strings.TrimRight(scanner.Text(), ".!")
25 count[word] += 1
26 }
27 fmt.Println(count)
28}
出力
map[Apple:1 I:4 Pineapple:1 a:3 an:1 apple:1 have:4 pen:4 pineapple:1]