回顾:键值存储
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 93 课,共 109 课。
挑战
简单让我们用一个简单的单词计数器来练习使用映射!
你的任务是编写一个程序,统计每个单词在单词列表中出现的次数。
要求:
- 完成
addWord()函数,将一个单词添加到计数映射中 - 完成
getCount()函数,返回指定单词的计数 - 完成
removeWord()函数,从计数器中移除一个单词
这是对如何使用映射存储键值对的简单回顾。
注意:为保持一致,输出会按字母顺序显示单词计数。
亲手试试
package main
import (
"fmt"
"sort"
)
// addWord 将一个单词添加到计数映射中
func addWord(counter map[string]int, word string) {
// 在这里编写你的代码
}
// getCount 返回指定单词的出现次数
func getCount(counter map[string]int, word string) int {
// 在这里编写你的代码
return 0
}
// removeWord 从计数映射中移除一个单词
// 如果找到并移除了该单词,则返回 true
func removeWord(counter map[string]int, word string) bool {
// 在这里编写你的代码
return false
}
// printWordCounts 按字母顺序打印单词及其出现次数
func printWordCounts(counter map[string]int) {
// 从映射中获取所有键(单词)
words := make([]string, 0, len(counter))
for word := range counter {
words = append(words, word)
}
// 按字母顺序排列单词
sort.Strings(words)
// 按排序后的顺序打印每个单词及其出现次数
for _, word := range words {
fmt.Printf("%s: %d\n", word, counter[word])
}
}
func main() {
// 初始化单词计数映射
wordCounter := make(map[string]int)
// 添加一些单词
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
for _, word := range words {
addWord(wordCounter, word)
}
// 打印单词及其出现次数
fmt.Println("Word counts:")
printWordCounts(wordCounter)
// 获取指定单词的出现次数
fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
// 删除一个单词
removed := removeWord(wordCounter, "banana")
fmt.Printf("\nRemoved 'banana': %v\n", removed)
// 尝试删除一个不存在的单词
removed = removeWord(wordCounter, "grape")
fmt.Printf("Removed 'grape': %v\n", removed)
// 打印最终的单词出现次数
fmt.Println("\nFinal word counts:")
printWordCounts(wordCounter)
}基础知识中的所有课
自己练习: Go 在线编译器