Avatar ·

Go में बाइट स्लाइस ([]byte) को io.Reader में कैसे बदलें?

सभी को नमस्ते! मैं Go में नया हूँ और डेटा स्ट्रीम के साथ काम करते समय एक समस्या का सामना कर रहा हूँ। मेरे पास एक function है जो डेटा पढ़ने के लिए io.Reader लेता है, उदाहरण के लिए फ़ाइल या HTTP response से। लेकिन मेरे मामले में डेटा पहले से ही मेमोरी में बाइट स्लाइस ([]byte) के रूप में है, जो archive को unzip करने या JSON प्रोसेस करने के बाद प्राप्त हुआ है।

यहाँ एक सरल उदाहरण है जो मैं करने की कोशिश कर रहा हूँ:

package main

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

func main() {
    data := []byte("Hello, World! यह मेमोरी में टेस्ट डेटा है")

    // data को io.Reader की उम्मीद करने वाले function में कैसे पास करें?
    // मैंने सीधे data पास करने की कोशिश की, लेकिन compilation error मिलता है:
    // cannot use data (type []byte) as type io.Reader in argument to processData
    processData(data)
}

func processData(r io.Reader) {
    content, _ := io.ReadAll(r)
    fmt.Println(string(content))
}

मैं समझता हूँ कि []byte और io.Reader अलग-अलग types हैं, और इसे सीधे ऐसे ही पास नहीं किया जा सकता।