Reader and Writer Interfaces
Reader va Writer interfeyslari
Go'da fayl, tarmoq ulanishi, matn yoki hatto xotiradagi bufer — hammasi bitta umumiy "til" orqali gaplashadi: io.Reader ("mendan ma'lumot o'qib olsa bo'ladi") va io.Writer ("menga ma'lumot yozsa bo'ladi") interfeyslari.
package main
import (
"bytes"
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("Salom, io dunyosi!")
var buf bytes.Buffer
n, err := io.Copy(&buf, r)
if err != nil {
fmt.Println("xato:", err)
return
}
fmt.Println(n)
fmt.Println(buf.String())
}strings.NewReader oddiy matnni io.Readerga aylantiradi (xuddi u haqiqiy fayldek). io.Copy(dst, src) — istalgan io.Readerdan istalgan io.Writerga ma'lumotni ko'chiradi va nechta bayt ko'chirilganini qaytaradi. Bu — Go'ning eng kuchli tomonlaridan biri: bitta io.Copy funksiyasi fayldan faylga, fayldan tarmoqqa, tarmoqdan xotiraga — barchasi bilan bir xil ishlaydi, chunki ular hammasi shu ikki interfeysga amal qiladi.
>_ Exercise
Matnni io.Reader orqali faylga ko'chiring.
- •message'ni strings.NewReader bilan Reader'ga aylantiring
- •message.txt faylini os.Create bilan yarating
- •io.Copy bilan Reader'dan fayl(Writer)ga ko'chiring, so'ng faylni o'qib chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
io.Reader va io.Writer — Go'dagi "universal til": fayl, tarmoq, xotira — hammasi shu ikki interfeys orqali bir xil ishlaydi.
NEXT UP
io Package Utilities
$ go run main.go
Kodingizni ishga tushiring