Ô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.
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:
- Hoàn thiện hàm
addWord()để thêm một từ vào từ điển đếm từ - Hoàn thiện hàm
getCount()để trả về số lần xuất hiện của một từ cụ thể - 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
4Toán tử so sánh và logic
Toán tử so sánh, phần 1Toán tử so sánh, phần 2Toán tử AND logicToán tử OR logicToán tử NOT logicCơ bản về thứ tự ưu tiên của toán tửÔn tập: thực hiện phép so sánh7Luồng điều khiển: vòng lặp
Giải thích vòng lặp `for`Vòng lặp `for` cơ bảnVòng lặp `for` chỉ có điều kiệnTừ khóa `break`Từ khóa `continue`Vòng lặp lồng nhauÔn tập: lặp lại hành động2Biến và các kiểu dữ liệu cơ bản
Biến là gìSuy luận kiểu với `:=`Số nguyên (int)Số dấu phẩy độngGiá trị BooleanChuỗiGiá trị 0Hằng sốQuy ước đặt tênÔn tập: biến và kiểu dữ liệu5Đầu vào/đầu ra cơ bản
Đầu ra có định dạngĐộng từ định dạngIn các kiểu dữ liệuNhận đầu vào cơ bản từ người dùngÔn tập: đầu vào và đầu ra8Hàm
Tìm hiểu về hàmKhai báo hàmGọi hàmTham số của hàmTrả về một giá trịTrả về nhiều giá trịGiá trị trả về có tênNhững điều cơ bản về phạm vi của hàmÔn tập: Tạo code có thể tái sử dụng3Toán tử cơ bản
Toán tử số họcToán tử chiaToán tử moduloToán tử gánToán tử gán kết hợpTăng và giảmÔn tập: Tính toán6Luồng điều khiển: câu lệnh điều kiện
Câu lệnh `if`Từ khóa `else`Từ khóa `else if`Biến bị che khuất trong `if`Khởi tạo biếnCâu lệnh `switch``switch` có biểu thức`switch` không có biểu thứcTừ khóa `fallthrough`Ôn tập: đưa ra quyết địnhTự luyện tập: Trình biên dịch Go online