GoDasturchi
Aggregator: Grouping

Aggregator: Grouping

Agregator: guruhlash

Endi sizda toza, ishlatishga tayyor Product qiymatlaringiz bor. Pipeline'ning keyingi bosqichi — ularni tahlil qilishga tayyorlash uchun guruhlash. Masalan: "har bir kategoriyada nechta mahsulot bor?" degan savolga javob berish uchun, avval mahsulotlarni kategoriyasi bo'yicha guruhlashingiz kerak.

Bu — Count Everything darsidagi counts[key]++ andazasining kengaytmasi. U yerda har bir kalit uchun sonni oshirgan edingiz; bu yerda esa har bir kalit uchun sliceni kengaytirasiz:

example.go
groups := make(map[string][]Product)
for _, p := range products {
	groups[p.Category] = append(groups[p.Category], p)
}

groups[p.Category] yo'q kalit uchun nol qiymatni — bo'sh []Product (nil slice)ni qaytaradi, va append(nil, p) bilan []Product{p} xosil bo'ladi. Xuddi counts[key]++ nolga 1 qo'shgani kabi, bu yerda ham mavjud bo'lmagan kalitni maxsus holat sifatida tekshirishning hojati yo'q — Go buni siz uchun to'g'ri hal qiladi.

Natija — map[string][]Product: har bir kategoriya nomi o'sha kategoriyadagi barcha mahsulotlar slicasiga ishora qiladi.

>_ Exercise

Mahsulotlarni Category maydoni bo'yicha guruhlaydigan GroupByCategory(products []Product) map[string][]Product funksiyasini yozing.

Misol:

  • 2 ta "electronics" va 1 ta "furniture" mahsulotli slice uchun, GroupByCategory len(groups["electronics"]) == 2 va len(groups["furniture"]) == 1 bo'lgan map qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

map[string][]T bilan guruhlash counts[key]++ning tabiiy davomi: groups[key] = append(groups[key], item). Yo'q kalit uchun appendning nol qiymati (nil slice) to'g'ri ishlaydi, maxsus tekshiruv shart emas.

NEXT UP

Aggregator: Math

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Aggregator: Grouping

Agregator: guruhlash

Endi sizda toza, ishlatishga tayyor Product qiymatlaringiz bor. Pipeline'ning keyingi bosqichi — ularni tahlil qilishga tayyorlash uchun guruhlash. Masalan: "har bir kategoriyada nechta mahsulot bor?" degan savolga javob berish uchun, avval mahsulotlarni kategoriyasi bo'yicha guruhlashingiz kerak.

Bu — Count Everything darsidagi counts[key]++ andazasining kengaytmasi. U yerda har bir kalit uchun sonni oshirgan edingiz; bu yerda esa har bir kalit uchun sliceni kengaytirasiz:

example.go
groups := make(map[string][]Product)
for _, p := range products {
	groups[p.Category] = append(groups[p.Category], p)
}

groups[p.Category] yo'q kalit uchun nol qiymatni — bo'sh []Product (nil slice)ni qaytaradi, va append(nil, p) bilan []Product{p} xosil bo'ladi. Xuddi counts[key]++ nolga 1 qo'shgani kabi, bu yerda ham mavjud bo'lmagan kalitni maxsus holat sifatida tekshirishning hojati yo'q — Go buni siz uchun to'g'ri hal qiladi.

Natija — map[string][]Product: har bir kategoriya nomi o'sha kategoriyadagi barcha mahsulotlar slicasiga ishora qiladi.

>_ Exercise

Mahsulotlarni Category maydoni bo'yicha guruhlaydigan GroupByCategory(products []Product) map[string][]Product funksiyasini yozing.

Misol:

  • 2 ta "electronics" va 1 ta "furniture" mahsulotli slice uchun, GroupByCategory len(groups["electronics"]) == 2 va len(groups["furniture"]) == 1 bo'lgan map qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

map[string][]T bilan guruhlash counts[key]++ning tabiiy davomi: groups[key] = append(groups[key], item). Yo'q kalit uchun appendning nol qiymati (nil slice) to'g'ri ishlaydi, maxsus tekshiruv shart emas.

NEXT UP

Aggregator: Math