Menu
CoddyTech

回顾:键值存储

本课属于 Coddy GO 学习旅程的“基础知识”单元。第 93 课,共 109 课。

challenge icon

挑战

简单

让我们用一个简单的单词计数器来练习使用映射!

你的任务是编写一个程序,统计每个单词在单词列表中出现的次数。

要求:

  1. 完成 addWord() 函数,将一个单词添加到计数映射中
  2. 完成 getCount() 函数,返回指定单词的计数
  3. 完成 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 在线编译器