78 / 103

Type assertions

Tip tasdiqlashlari

Tip tasdiqlashi (type assertion) interface qiymatining asosiy aniq qiymatiga kirish imkonini beradi.

example.go
t := i.(T)

Bu ifoda i interface qiymati T aniq tipini saqlayotganini tasdiqlaydi va asosiy T qiymatini t o'zgaruvchisiga o'zlashtiradi.

Agar i T ni saqlamasa, ifoda panic chaqiradi.

Interface qiymati ma'lum bir tipni saqlayotganini tekshirish uchun tip tasdiqlashi ikkita qiymat qaytarishi mumkin: asosiy qiymat va tasdiqlash muvaffaqiyatli bo'lganini bildiruvchi mantiqiy qiymat.

example.go
t, ok := i.(T)

Agar i T ni saqlasa, t asosiy qiymat bo'ladi va ok true bo'ladi.

Aks holda, ok false bo'ladi, t esa T tipining nol qiymati bo'ladi va panic yuz bermaydi.

Bu sintaksis map'dan o'qish sintaksisiga qanchalik o'xshashligiga e'tibor bering.

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

SatrMi(i any) (string, bool) funksiyasini yozing: i ichida string bo'lsa uni va true qaytarsin, aks holda "", false (panic bo'lmasligi uchun s, ok := i.(string) shaklini ishlating).

2-topshiriq

ButunYigindi(list []any) int funksiyasini yozing: ro'yxatdagi faqat int tipidagi elementlarni qo'shsin, boshqa tiplarni (satr, kasr va h.k.) o'tkazib yuborsin. Masalan, []any{1, "a", 2, 3.5, 3} — 6.