دوال الأداة 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- واجهة Reader
- واجهة Writer
- دوال الأداة io
- تنفيذ قارئات مخصّصة