GoDasturchi
comparable: The Equality Constraint

comparable: The Equality Constraint

comparable: tenglik cheklovi

Go'da o'rnatilgan yana bir maxsus cheklov bor: `comparable`. U == va != bilan solishtirish mumkin bo'lgan barcha turlarga mos keladi — sonlar, satrlar, bool, va (Composite Types kursida ko'rganingizdek) map kaliti bo'la oladigan boshqa turlar.

comparablening eng katta foydasi — uni map kaliti sifatida ishlatish mumkinligi, chunki map kaliti bo'lish uchun tur solishtirish imkoniga ega bo'lishi shart:

example.go
func Unique[T comparable](items []T) []T {
    seen := make(map[T]bool)
    result := []T{}
    for _, item := range items {
        if !seen[item] {
            seen[item] = true
            result = append(result, item)
        }
    }
    return result
}

Bu — Count Everything darsidagi map[string]int bilan sanash andazasining generic versiyasi, faqat endi kalit turi stringga qattiq bog'lanmagan — comparablega mos keladigan har qanday tur (int, string, hatto struct'lar) bilan ishlaydi.

>_ Exercise

Unique[T comparable](items []T) []T funksiyasini yozing. U items ichidan takrorlanmagan elementlarni, birinchi uchragan tartibda, yangi slice'da qaytaradi. map[T]bool yordamida qaysi qiymatlar allaqachon ko'rilganini kuzating.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

comparable==/!= bilan solishtirish mumkin bo'lgan turlar uchun o'rnatilgan cheklov, va bu ularni map kaliti sifatida ishlatish imkonini beradi. Unique kabi funksiyalar comparable tufayli istalgan mos keladigan tur bilan qayta ishlatiladigan bo'ladi.

NEXT UP

Generic Structs: Type Parameters on Data

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

comparable: The Equality Constraint

comparable: tenglik cheklovi

Go'da o'rnatilgan yana bir maxsus cheklov bor: `comparable`. U == va != bilan solishtirish mumkin bo'lgan barcha turlarga mos keladi — sonlar, satrlar, bool, va (Composite Types kursida ko'rganingizdek) map kaliti bo'la oladigan boshqa turlar.

comparablening eng katta foydasi — uni map kaliti sifatida ishlatish mumkinligi, chunki map kaliti bo'lish uchun tur solishtirish imkoniga ega bo'lishi shart:

example.go
func Unique[T comparable](items []T) []T {
    seen := make(map[T]bool)
    result := []T{}
    for _, item := range items {
        if !seen[item] {
            seen[item] = true
            result = append(result, item)
        }
    }
    return result
}

Bu — Count Everything darsidagi map[string]int bilan sanash andazasining generic versiyasi, faqat endi kalit turi stringga qattiq bog'lanmagan — comparablega mos keladigan har qanday tur (int, string, hatto struct'lar) bilan ishlaydi.

>_ Exercise

Unique[T comparable](items []T) []T funksiyasini yozing. U items ichidan takrorlanmagan elementlarni, birinchi uchragan tartibda, yangi slice'da qaytaradi. map[T]bool yordamida qaysi qiymatlar allaqachon ko'rilganini kuzating.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

comparable==/!= bilan solishtirish mumkin bo'lgan turlar uchun o'rnatilgan cheklov, va bu ularni map kaliti sifatida ishlatish imkonini beradi. Unique kabi funksiyalar comparable tufayli istalgan mos keladigan tur bilan qayta ishlatiladigan bo'ladi.

NEXT UP

Generic Structs: Type Parameters on Data