Generic Types and Structs
Generic turlar va struct'lar
Tur parametrlari nafaqat funksiyalarga, balki struct'larga ham qo'llanilishi mumkin. Bu Composite Types kursidagi struct'laringizni bitta qattiq turga bog'lash o'rniga, ular ichidagi ma'lumot turini ham moslashuvchan qilish imkonini beradi. Klassik misol — ikkita bog'liq bo'lmagan qiymatni birga saqlaydigan Pair:
type Pair[A, B any] struct {
First A
Second B
}
func MakePair[A, B any](first A, second B) Pair[A, B] {
return Pair[A, B]{First: first, Second: second}
}Pair[A, B any] ikkita mustaqil tur parametrini e'lon qiladi — A va B bir xil bo'lishi shart emas. Pair[string, int] — string va intni birga saqlaydigan Pair, Pair[int, bool] esa butunlay boshqa kombinatsiya, lekin ikkalasi ham bitta Pair e'lonidan kelib chiqadi.
>_ Exercise
First A va Second B maydonlariga ega Pair[A, B any] struct'ini yozing. MakePair[A, B any](first A, second B) Pair[A, B] funksiyasini yozing — u ikkita qiymatdan Pair yasab qaytaradi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Struct'lar ham bir nechta mustaqil tur parametriga ega bo'lishi mumkin (Pair[A, B any]). Bitta e'londan Pair[string, int], Pair[int, bool] kabi cheksiz ko'p konkret kombinatsiya hosil qilish mumkin, kodni nusxalamasdan.
NEXT UP
Type Constraints and the any Keyword
$ go run main.go
Kodingizni ishga tushiring