Generic Structs: Type Parameters on Data
Generic struct'lar: ma'lumotdagi tur parametrlari
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:
type Box[T any] struct {
value T
}
func (b *Box[T]) Get() T {
return b.value
}
func (b *Box[T]) Set(v T) {
b.value = v
}E'tibor bering: struct nomidan keyin [T] yozilgan, va metod receiver'ida ham (b *Box[T]) — struct qaysi konkret tur bilan yaratilganidan qat'i nazar, uning metodlari o'sha turni "eslab qoladi". Box[int]{} — int saqlaydigan quti, Box[string]{} — string saqlaydigan quti, lekin ikkalasi ham bitta kod bilan aniqlangan.
>_ Exercise
value T maydoniga ega Box[T any] generic struct'ini yozing. *Box[T] uchun Get() T (qiymatni qaytaradi) va Set(v T) (qiymatni o'zgartiradi) metodlarini yozing.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Struct'lar ham tur parametrlariga ega bo'lishi mumkin (Box[T any]). Uning metodlari e'lon qilinganda receiver ham [T]ni ko'rsatishi kerak — shunda metod struct qaysi tur bilan yaratilgan bo'lsa, o'sha turda ishlaydi.
NEXT UP
Methods on Generic Types
$ go run main.go
Kodingizni ishga tushiring