GoDasturchi
Generic Types and Structs

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:

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

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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:

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

Hints (0/3)

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