GoDasturchi
Type Inference in Practice

Type Inference in Practice

Amaliyotda tur xulosasi (type inference)

Oldingi darslarning barchasida siz tur parametrlarini chaqiruv joyida hech qachon yozmadingiz — Repeat("go", 3), Sum([]int{1,2,3}). Go ularni argumentlardan avtomatik chiqarib oldi. Lekin bu har doim ham mumkin emas.

example.go
p1 := MakePair("age", 28)        // Go A=string, B=int ni chiqarib oladi
p2 := MakePair[int, int](1, 2)   // ba'zan aniq ko'rsatish kerak yoki aniqroq bo'ladi

Type inference argumentlarning qiymatlariga qarab ishlaydi. Agar funksiya argumentlari orqali barcha tur parametrlarini aniqlash mumkin bo'lsa (MakePair("age", 28) kabi), Go ularni yozishga majburlamaydi. Lekin ba'zan (masalan, ikkala argument ham bir xil tur bo'lib, lekin siz boshqacha tur kutayotgan bo'lsangiz, yoki natija turi argumentlardan chiqmasa) turlarni aniq ko'rsatish kerak bo'ladi: FuncName[Type1, Type2](args).

>_ Exercise

Berilgan MakePair[A, B any](first A, second B) Pair[A, B] funksiyasidan ikki xil tarzda foydalaning: birinchi chaqiruvda turlarni yozmasdan (Go ularni argumentlardan chiqarib olsin), ikkinchisida esa turlarni aniq ko'rsatib (MakePair[int, int](...)). main funksiyasini ikkalasini ham sinab ko'radigan qilib to'ldiring.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Go ko'pincha tur parametrlarini funksiya argumentlaridan avtomatik chiqarib oladi (type inference), shuning uchun ularni chaqiruv joyida yozish shart emas. Lekin bu imkonsiz yoki noaniq bo'lgan holatlarda, turlarni FuncName[Type1, Type2](...) shaklida aniq ko'rsatish mumkin.

NEXT UP

When to Use Generics (and When Not To)

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Type Inference in Practice

Amaliyotda tur xulosasi (type inference)

Oldingi darslarning barchasida siz tur parametrlarini chaqiruv joyida hech qachon yozmadingiz — Repeat("go", 3), Sum([]int{1,2,3}). Go ularni argumentlardan avtomatik chiqarib oldi. Lekin bu har doim ham mumkin emas.

example.go
p1 := MakePair("age", 28)        // Go A=string, B=int ni chiqarib oladi
p2 := MakePair[int, int](1, 2)   // ba'zan aniq ko'rsatish kerak yoki aniqroq bo'ladi

Type inference argumentlarning qiymatlariga qarab ishlaydi. Agar funksiya argumentlari orqali barcha tur parametrlarini aniqlash mumkin bo'lsa (MakePair("age", 28) kabi), Go ularni yozishga majburlamaydi. Lekin ba'zan (masalan, ikkala argument ham bir xil tur bo'lib, lekin siz boshqacha tur kutayotgan bo'lsangiz, yoki natija turi argumentlardan chiqmasa) turlarni aniq ko'rsatish kerak bo'ladi: FuncName[Type1, Type2](args).

>_ Exercise

Berilgan MakePair[A, B any](first A, second B) Pair[A, B] funksiyasidan ikki xil tarzda foydalaning: birinchi chaqiruvda turlarni yozmasdan (Go ularni argumentlardan chiqarib olsin), ikkinchisida esa turlarni aniq ko'rsatib (MakePair[int, int](...)). main funksiyasini ikkalasini ham sinab ko'radigan qilib to'ldiring.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Go ko'pincha tur parametrlarini funksiya argumentlaridan avtomatik chiqarib oladi (type inference), shuning uchun ularni chaqiruv joyida yozish shart emas. Lekin bu imkonsiz yoki noaniq bo'lgan holatlarda, turlarni FuncName[Type1, Type2](...) shaklida aniq ko'rsatish mumkin.

NEXT UP

When to Use Generics (and When Not To)