GoDasturchi
Generic Structs: Type Parameters on Data

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:

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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:

example.go
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.

Hints (0/3)

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