84 / 103

Readers

Reader'lar

io paketi ma'lumotlar oqimining o'qish uchini ifodalovchi io.Reader interface'ini belgilaydi.

Go standart kutubxonasi bu interface'ning ko'plab amalga oshirilishini o'z ichiga oladi: fayllar, tarmoq ulanishlari, kompressorlar, shifrlar va boshqalar.

io.Reader interface'ida Read metodi bor:

example.go
func (T) Read(b []byte) (n int, err error)

Read berilgan bayt slice'ini ma'lumotlar bilan to'ldiradi va to'ldirilgan baytlar sonini hamda xato qiymatini qaytaradi. Oqim tugaganda u io.EOF xatosini qaytaradi.

Misol kod strings.Reader yaratadi va uning chiqishini har safar 8 baytdan o'qib chiqadi.

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

OqibChiq(r io.Reader) (string, error) funksiyasini yozing: r dan Read metodi bilan (masalan, 4 baytlik bo'laklarda) oxirigacha (io.EOF) o'qib, hammasini bitta satr qilib qaytarsin. Xato faqat io.EOF dan boshqa bo'lsa qaytarilsin.

2-topshiriq

BaytSoni(r io.Reader) int funksiyasini yozing: r dagi jami baytlar sonini o'qib sanab, qaytarsin. Masalan, BaytSoni(strings.NewReader("salom")) — 5.