GoDasturchi
Reader and Writer Interfaces

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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