GoDasturchi
Project: Music Catalog (Search)

Project: Music Catalog (Search)

Loyiha: Musiqa katalogi (Qidiruv)

example.go
prices := map[string]float64{"apple": 1.20, "banana": 0.50, "cherry": 2.50}

var expensive []string
for name, price := range prices {
	if price >= 2.0 {
		expensive = append(expensive, name)
	}
}
// expensive == ["cherry"]

Slicelar, maplar yoki ichma-ich ma'lumotlar bilan ishlashingizdan qat'i nazar, filtrlash va sanash bir xil andazaga amal qiladi. Bo'sh natijadan boshlang. To'plam bo'ylab yuring. Shartingizni tekshiring. Mos kelganlarini qo'shing.

Sanash — map akkumulyatori bilan bir xil g'oya. Ma'lumot bo'ylab yuring, har bir kategoriya uchun yozuvni oshiring. intning nol qiymati 0, shuning uchun counts[key]++ hech qanday sozlamasiz ko'rilmagan kalitlarda ham ishlaydi.

Bu mashq ikkala andazani ichma-ich ma'lumot bilan birlashtiradi. Kutubxonangiz albomlarni, albomlar esa qo'shiqlarni saqlaydi. Janrlarni sanash uchun albomlar bo'ylab, so'ng har bir albomning qo'shiqlari bo'ylab yurasiz. Ikkita sikl, bitta map.

>_ Exercise

Kutubxonangiz albomlarni saqlashi va olishi mumkin. Endi uni qidiriladigan qiling.

Library ustida quyidagi metodlarni yozing:

  • 1. (lib Library) SearchByArtist(artist string) []Album — berilgan ijrochining barcha albomlarini qaytaradi
  • 2. (lib Library) GenreCount() map[string]int — barcha albomlar bo'yicha har bir janrda nechta qo'shiq borligini sanaydi
  • 3. (lib Library) TotalSongs() int — barcha albomlardagi qo'shiqlarning umumiy sonini qaytaradi

Misollar:

  • 2 ta Beatles albomi va 1 ta Michael Jackson albomiga ega kutubxonada: lib.SearchByArtist("The Beatles") 2 ta albomli slice qaytaradi
  • 3 ta rok va 2 ta pop qo'shig'iga ega kutubxonada: lib.GenreCount() map[string]int{"rock": 3, "pop": 2} qaytaradi
  • 2 va 3 qo'shiqli albomlarga ega kutubxonada: lib.TotalSongs() 5 qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Filtrlash va sanash andazalari istalgan to'plamda ishlaydi. Ularni ichma-ich qilish qo'shiqlarni o'z ichiga olgan albomlar kabi ierarxik ma'lumotlarni boshqaradi.

Finish
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Project: Music Catalog (Search)

Loyiha: Musiqa katalogi (Qidiruv)

example.go
prices := map[string]float64{"apple": 1.20, "banana": 0.50, "cherry": 2.50}

var expensive []string
for name, price := range prices {
	if price >= 2.0 {
		expensive = append(expensive, name)
	}
}
// expensive == ["cherry"]

Slicelar, maplar yoki ichma-ich ma'lumotlar bilan ishlashingizdan qat'i nazar, filtrlash va sanash bir xil andazaga amal qiladi. Bo'sh natijadan boshlang. To'plam bo'ylab yuring. Shartingizni tekshiring. Mos kelganlarini qo'shing.

Sanash — map akkumulyatori bilan bir xil g'oya. Ma'lumot bo'ylab yuring, har bir kategoriya uchun yozuvni oshiring. intning nol qiymati 0, shuning uchun counts[key]++ hech qanday sozlamasiz ko'rilmagan kalitlarda ham ishlaydi.

Bu mashq ikkala andazani ichma-ich ma'lumot bilan birlashtiradi. Kutubxonangiz albomlarni, albomlar esa qo'shiqlarni saqlaydi. Janrlarni sanash uchun albomlar bo'ylab, so'ng har bir albomning qo'shiqlari bo'ylab yurasiz. Ikkita sikl, bitta map.

>_ Exercise

Kutubxonangiz albomlarni saqlashi va olishi mumkin. Endi uni qidiriladigan qiling.

Library ustida quyidagi metodlarni yozing:

  • 1. (lib Library) SearchByArtist(artist string) []Album — berilgan ijrochining barcha albomlarini qaytaradi
  • 2. (lib Library) GenreCount() map[string]int — barcha albomlar bo'yicha har bir janrda nechta qo'shiq borligini sanaydi
  • 3. (lib Library) TotalSongs() int — barcha albomlardagi qo'shiqlarning umumiy sonini qaytaradi

Misollar:

  • 2 ta Beatles albomi va 1 ta Michael Jackson albomiga ega kutubxonada: lib.SearchByArtist("The Beatles") 2 ta albomli slice qaytaradi
  • 3 ta rok va 2 ta pop qo'shig'iga ega kutubxonada: lib.GenreCount() map[string]int{"rock": 3, "pop": 2} qaytaradi
  • 2 va 3 qo'shiqli albomlarga ega kutubxonada: lib.TotalSongs() 5 qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Filtrlash va sanash andazalari istalgan to'plamda ishlaydi. Ularni ichma-ich qilish qo'shiqlarni o'z ichiga olgan albomlar kabi ierarxik ma'lumotlarni boshqaradi.