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.
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'ladiType 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.
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)
$ go run main.go
Kodingizni ishga tushiring