كيفية تحويل شريحة بايت ([]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)`. لكن هل يجب علي كتابة هيكلي الخاص وتنفيذ هذه الطريقة في كل مرة؟