Aggregator: Math
Agregator: matematika
Guruhlangan mahsulotlar tayyor — endi har bir guruh uchun sonli statistikani hisoblaymiz: nechta mahsulot bor, ularning umumiy narxi qancha, va o'rtacha narxi qancha.
type CategoryStats struct {
Count int
Total float64
Avg float64
}Har bir kategoriya uchun, o'sha kategoriyadagi mahsulotlar bo'ylab yurib, narxlarni yig'asiz — bu Math That Makes Sense darsidagi oddiy yig'indi siklining o'zi, faqat endi int emas, float64 bilan:
var total float64
for _, p := range products {
total += p.Price
}O'rtachani hisoblash uchun jamini sonlarga bo'lasiz. Math That Makes Sense darsida ko'rganingizdek, int / int butun sonli bo'lish beradi — lekin bu yerda muammo yo'q, chunki total allaqachon float64, va uni float64(count)ga bo'lish to'liq aniqlikdagi natija beradi.
avg := total / float64(count)Butun map[string][]Productni qayta ishlash uchun, uning ustidan range qilib, har bir kategoriya uchun statistikani hisoblab, yangi map[string]CategoryStatsga yozasiz.
>_ Exercise
Count int, Total float64, va Avg float64 maydonlariga ega CategoryStats struct'ini aniqlang.
Har bir kategoriya uchun soni, umumiy narxi va o'rtacha narxini hisoblaydigan ComputeStats(groups map[string][]Product) map[string]CategoryStats funksiyasini yozing.
Misol:
- •
999.99va19.99narxli 2 ta"electronics"mahsuloti uchun:Count: 2,Total: 1019.98,Avg: 509.99
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Guruhlangan ma'lumot ustida agregatlarni (son, jami, o'rtacha) hisoblash — ichma-ich siklning oddiy qo'llanilishi. O'rtachani hisoblaganda, butun sonli bo'lish xato natija bermasligi uchun bo'linuvchini float64ga aylantirishni unutmang.
NEXT UP
Pipeline
$ go run main.go
Kodingizni ishga tushiring