90 / 103

Type parameters

Type parameter'lar

Go funksiyalarini type parameter'lar yordamida bir nechta tipda ishlaydigan qilib yozish mumkin. Funksiyaning type parameter'lari funksiya argumentlaridan oldin, kvadrat qavslar ichida ko'rsatiladi.

example.go
func Index[T comparable](s []T, x T) int

Bu e'lon s — o'rnatilgan comparable cheklovini (constraint) qanoatlantiradigan har qanday T tipidagi slice ekanini bildiradi. x ham aynan shu tipdagi qiymat.

comparable — foydali cheklov bo'lib, u tipdagi qiymatlar ustida == va != operatorlarini ishlatish imkonini beradi.

Bu misolda biz undan qiymatni mos kelguncha slice'ning barcha elementlari bilan solishtirish uchun foydalanamiz. Bu Index funksiyasi solishtirishni qo'llab-quvvatlaydigan har qanday tip uchun ishlaydi.

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

Contains[T comparable](s []T, x T) bool generic funksiyasini yozing: x slice'da bor bo'lsa true qaytarsin. U int slice'lari uchun ham, string slice'lari uchun ham ishlashi kerak. Masalan, Contains([]string{"a", "b"}, "b") — true.

2-topshiriq

Max[T int | float64](a, b T) T generic funksiyasini yozing: ikki sonning kattasini qaytarsin (int | float64 — tip cheklovi (type constraint), ya'ni T faqat shu ikki tipdan biri bo'lishi mumkin). Masalan, Max(3, 7) — 7, Max(2.5, 1.5) — 2.5.