Multiple Type Parameters
Bir nechta tur parametri
Generic funksiyalar bir nechta tur parametrini turli cheklovlar bilan birlashtirishi mumkin. Buning kuchli namunasi — YAML Data Pipeline kursidagi GroupByCategoryning generic versiyasi: endi u faqat Productga emas, istalgan elementlar turiga va istalgan kalit funksiyasiga ishlaydi.
func GroupBy[T any, K comparable](items []T, keyFn func(T) K) map[K][]T {
groups := make(map[K][]T)
for _, item := range items {
key := keyFn(item)
groups[key] = append(groups[key], item)
}
return groups
}T any — elementlar mutlaqo har qanday tur bo'lishi mumkin. K comparable — kalit map kaliti bo'la olishi kerak. keyFn func(T) K — chaqiruvchi har bir elementdan qanday qilib kalit chiqarishni belgilaydi. Bu — Pointers & Memory kursidagi "xatti-harakatni funksiya parametri sifatida uzatish" g'oyasining generics bilan birlashuvi.
>_ Exercise
GroupBy[T any, K comparable](items []T, keyFn func(T) K) map[K][]T funksiyasini yozing. U har bir element uchun keyFnni chaqirib kalitni oladi va elementni o'sha kalit ostidagi slice'ga qo'shadi, so'ngra to'liq map'ni qaytaradi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Bir nechta tur parametri (T any, K comparable) har biri o'ziga mos cheklov bilan bitta funksiyada birlashishi mumkin. GroupBy shu tufayli har qanday element turi va har qanday kalit chiqarish mantig'i bilan qayta ishlatiladigan bo'ladi — YAML Data Pipeline kursidagi qattiq turga bog'langan versiyadan ko'ra ancha moslashuvchan.
NEXT UP
Zero Values in Generic Code
$ go run main.go
Kodingizni ishga tushiring