75 / 103

Interface values with nil underlying values

Asosiy qiymati nil bo'lgan interface qiymatlari

Agar interface ichidagi aniq qiymatning o'zi nil bo'lsa, metod nil receiver bilan chaqiriladi.

Ba'zi tillarda bu null pointer istisnosini keltirib chiqargan bo'lardi, lekin Goda nil receiver bilan chaqirilishni xatosiz qayta ishlaydigan metodlarni yozish odatiy hol (bu misoldagi M metodi kabi).

E'tibor bering: aniq nil qiymatni saqlayotgan interface qiymatining o'zi nil emas.

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

NilMi(i I) bool funksiyasini yozing: interface qiymatining o'zi nil bo'lsagina true qaytarsin. Eslang: ichida nil pointer saqlagan interface nil emas.

2-topshiriq

T uchun pointer receiver'li Uzunlik() int metodini yozing: S satrining uzunligini qaytarsin, lekin receiver nil bo'lsa 0 qaytarsin (nil receiver bilan ham panic bo'lmasin). Masalan, (&T{"abc"}).Uzunlik() — 3, (*T)(nil).Uzunlik() — 0.