Go 練習問題
Word Frequency Counter in Go
Count how often each word appears with a map and print the most common ones.
学べること
- strings.Fields
- counts[word]++
- Sorting by count
counts
"the"3"brown"1"dog"1The word is the key, the count is the value
Counting words is a typical job for a map: the word is the key and the number of times it appears is the value.
counts[word]++ works even for a new word, because a missing key reads as 0. The words are then sorted by count, highest first, and alphabetically when the counts are equal, so the output is always the same.
重要なポイント
- A missing key reads as 0, so ++ just works.
- Sort by count, then by word.
words[:3]keeps the top three.
実行できる Go のサンプル
Go
main.go
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
text := "the quick brown fox jumps over the lazy dog the end"
counts := map[string]int{}
for _, word := range strings.Fields(text) {
counts[word]++
}
words := make([]string, 0, len(counts))
for word := range counts {
words = append(words, word)
}
sort.Slice(words, func(i, j int) bool {
if counts[words[i]] != counts[words[j]] {
return counts[words[i]] > counts[words[j]]
}
return words[i] < words[j]
})
for _, word := range words[:3] {
fmt.Printf("%s: %d\n", word, counts[word])
}
}
the: 3
brown: 1
dog: 1練習
サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。
このレッスンを終えましたか?
学習済みにすると進み具合を記録できます。
進み具合はこのブラウザーに保存されています ログインすると、どのデバイスでも引き継げます。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ