Avatar ·

كيفية تحويل شريحة بايت ([]byte) إلى io.Reader في Golang؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة أثناء العمل مع تدفقات البيانات. لدي دالة تقبل واجهة `io.Reader`، لكنني أعمل مع بيانات موجودة بالفعل في الذاكرة على شكل شريحة بايت (`[]byte`). إليك مثال مبسط. لنفترض أنني أحصل على بيانات من طلب HTTP أو أقرأ ملفًا، لكن لسبب ما لدي بالفعل `[]byte`: ```go package main import ( "fmt" "io" "log" ) func processData(r io.Reader) { data, err := io.ReadAll(r) if err != nil { log.Fatal(err) } fmt.Println("تم الاستلام:", string(data)) } func main() { myBytes := []byte("Hello, World! هذه بيانات اختبارية.") // كيف يمكنني تمرير myBytes إلى processData؟ // processData(myBytes) // خطأ في الترجمة! } ``` أفهم أن `io.Reader` هي واجهة، ولتنفيذها يجب أن يكون لدي طريقة `Read(p []byte) (n int, err error)`. لكن هل يجب علي كتابة هيكلي الخاص وتنفيذ هذه الطريقة في كل مرة؟