想像你開了一家小雜貨店:
這時候你要的是一張「水果 → 數量」的對照表:
蘋果 3
香蕉 2
葡萄 1
用程式怎麼做到呢?這就是我們今天要用 Go 語言來解的問題。
很多初學者第一次看到這段 Go 語法時會很疑惑:
for _, n := range arr {
count[n]++
}
這到底在做什麼?
3. map 怎麼幫我們記錄?
在程式裡,我們會這樣寫:
arr := []string{"蘋果", "香蕉", "香蕉", "蘋果", "蘋果", "葡萄"}
count := make(map[string]int) // key 是水果名稱,value 是數量
for _, item := range arr {
count[item]++
}
count = {"蘋果":3, "香蕉":2, "葡萄":1}
不用自己記水果名稱,map 自己就是「名稱 → 數量」的記錄本!
4. 為什麼不用直接 range count ?
因為一開始 count 是空的,還沒任何數據可讀。
5. 怎麼印出「名稱 - 數量」表?
for name, qty := range count {
fmt.Println(name, qty)
}
輸出:
蘋果 3
香蕉 2
葡萄 1
6. 完整範例程式
package main
import "fmt"
func main() {
// 客人進貨清單
arr := []string{"蘋果", "香蕉", "香蕉", "蘋果", "蘋果", "葡萄"}
// 建立一個 map 記錄水果數量
count := make(map[string]int)
// 1. 統計數量
for _, item := range arr {
count[item]++
}
// 2. 印出水果名稱和數量
fmt.Println("商品 數量")
for name, qty := range count {
fmt.Println(name, qty)
}
}
執行結果:
商品 數量
蘋果 3
香蕉 2
葡萄 1
7. 小結