Menu
CoddyTech

Ôn tập: lưu trữ khóa-giá trị

Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 93 trên 109.

challenge icon

Thử thách

Dễ

Hãy luyện tập sử dụng từ điển (map) với một chương trình đếm từ đơn giản!

Nhiệm vụ của bạn là tạo một chương trình đếm số lần mỗi từ xuất hiện trong danh sách từ.

Yêu cầu:

  1. Hoàn thiện hàm addWord() để thêm một từ vào từ điển đếm từ
  2. Hoàn thiện hàm getCount() để trả về số lần xuất hiện của một từ cụ thể
  3. Hoàn thiện hàm removeWord() để xóa một từ khỏi bộ đếm

Đây là phần ôn tập đơn giản về cách dùng từ điển để lưu trữ các cặp khóa và giá trị.

Lưu ý: Đầu ra sẽ hiển thị số lần xuất hiện của các từ theo thứ tự bảng chữ cái để đảm bảo tính nhất quán.

Tự làm thử

package main

import (
	"fmt"
	"sort"
)

// addWord thêm một từ vào map đếm từ
func addWord(counter map[string]int, word string) {
	// Viết code của bạn ở đây
}

// getCount trả về số lần xuất hiện của một từ cụ thể
func getCount(counter map[string]int, word string) int {
	// Viết code của bạn ở đây
	return 0
}

// removeWord xóa một từ khỏi bộ đếm
// Trả về true nếu tìm thấy và xóa từ đó
func removeWord(counter map[string]int, word string) bool {
	// Viết code của bạn ở đây
	return false
}

// printWordCounts in ra số lần xuất hiện của các từ theo thứ tự bảng chữ cái
func printWordCounts(counter map[string]int) {
	// Lấy tất cả các khóa (các từ) từ map
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Sắp xếp các từ theo thứ tự bảng chữ cái
	sort.Strings(words)
	
	// In ra từng từ và số lần xuất hiện theo thứ tự đã sắp xếp
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Khởi tạo map đếm từ
	wordCounter := make(map[string]int)
	
	// Thêm một vài từ
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// In ra số lần xuất hiện của các từ
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Lấy số lần xuất hiện của các từ cụ thể
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Xóa một từ
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Thử xóa một từ không tồn tại
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// In ra số lần xuất hiện cuối cùng của các từ
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Go online