0Pricing
Go Academy · درس

دوال الأداة io

استخدم Copy وTeeReader وMultiWriter

دوال الأداة io درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

صندوق أدوات io

توفر الحزمة io أدوات مساعدة صغيرة وقوية تجمع بين القرّاء والكتّاب، مثل Copy وTeeReader وMultiWriter وغيرها.

io.Copy

تدفق io.Copy(dst, src) جميع البايتات من قارئ إلى كاتب، وتُعيد عددها.

package main

import (
	"fmt"
	"io"
	"os"
	"strings"
)

func main() {
	n, _ := io.Copy(os.Stdout, strings.NewReader("copied\n"))
	fmt.Println("bytes:", n)
}

io.CopyN

تنسخ io.CopyN(dst, src, n) عددًا محددًا تمامًا من البايتات، وهو مفيد لقراءة بادئة ذات طول معروف.

package main

import (
	"io"
	"os"
	"strings"
)

func main() {
	io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
	os.Stdout.WriteString("\n")
}

io.MultiWriter

يوجّه io.MultiWriter عملية كتابة واحدة إلى عدة كتّاب في الوقت نفسه، مثل أمر Unix tee.

package main

import (
	"bytes"
	"fmt"
	"io"
	"os"
)

func main() {
	var buf bytes.Buffer
	w := io.MultiWriter(os.Stdout, &buf)
	io.WriteString(w, "to both\n")
	fmt.Println("buffer copy:", buf.String())
}

io.TeeReader

تُعيد io.TeeReader(r, w) قارئًا ينسخ كل ما يقرأه إلى w، ما يجعله مناسبًا جدًا لتسجيل البيانات أو حساب تجزئتها أثناء تدفقها.

package main

import (
	"bytes"
	"fmt"
	"io"
	"strings"
)

func main() {
	var spy bytes.Buffer
	tee := io.TeeReader(strings.NewReader("stream"), &spy)
	io.ReadAll(tee)
	fmt.Println("observed:", spy.String())
}

io.MultiReader

تصل io.MultiReader عدة قرّاء في تدفق واحد متواصل.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	r := io.MultiReader(strings.NewReader("Hello, "), strings.NewReader("World"))
	data, _ := io.ReadAll(r)
	fmt.Println(string(data))
}

io.Discard

‏io.Discard كاتب يتخلص من كل شيء، وهو مفيد لتفريغ قارئ لا تحتاج إلى بياناته.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
	fmt.Println("discarded:", n, "bytes")
}

حساب التجزئة باستخدام TeeReader

تركيبة شائعة: اقرأ التدفق لغرضه الفعلي، بينما يمرر TeeReader البايتات نفسها إلى دالة تجزئة، فتحسب قيمة التحقق في مرور واحد.

io.Pipe

تصل io.Pipe كاتبًا بقارئ في الذاكرة، غالبًا عبر goroutines، لاستخدام أنماط تدفق المنتج والمستهلك.

اختيار الأداة المساعدة المناسبة

  • نقل البيانات: Copy / CopyN
  • تكرار الإخراج: MultiWriter
  • مراقبة الإدخال: TeeReader
  • ضم المدخلات: MultiReader
  • تفريغ الإدخال: Discard

قابلية التركيب

تتحدث هذه الأدوات جميعًا عبر io.Reader/io.Writer، لذلك يمكن تداخلها وتسلسلها بحرية لبناء مسارات معالجة متقدمة من أجزاء صغيرة.

تحقق سريع

اختبر معرفتك بأدوات io المساعدة.

مراجعة

تعلمت الأدوات المساعدة في io.

  • تُدفق Copy / CopyN البيانات
  • يكرر MultiWriter الإخراج
  • يراقب TeeReader الإدخال
  • يضم MultiReader المدخلات، بينما يفرّغ Discard البيانات
  • يمكن تركيبها جميعًا عبر واجهتي Reader/Writer

الأسئلة الشائعة

هل درس «دوال الأداة io» مجاني؟

نعم — نص درس «دوال الأداة io» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «دوال الأداة io»؟

استخدم Copy وTeeReader وMultiWriter تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «دوال الأداة io»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. واجهة Reader
  2. واجهة Writer
  3. دوال الأداة io
  4. تنفيذ قارئات مخصّصة
← العودة إلى Go Academy