Aggregator: Math

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.

example.go
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:

example.go
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.

example.go
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.99 va 19.99 narxli 2 ta "electronics" mahsuloti uchun: Count: 2, Total: 1019.98, Avg: 509.99

Stuck? Reveal a hint to help you.

Hints (0/4)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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:

example.go
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.

example.go
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.99 va 19.99 narxli 2 ta "electronics" mahsuloti uchun: Count: 2, Total: 1019.98, Avg: 509.99

Stuck? Reveal a hint to help you.

Hints (0/4)

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