Avatar ·

Cómo convertir un slice de bytes ([]byte) a io.Reader en Go

¡Hola a todos! Soy nuevo en Go y me encontré con un problema al trabajar con flujos de datos. Tengo una función que acepta io.Reader para leer datos, por ejemplo, de un archivo o una respuesta HTTP. Pero en mi caso, los datos ya están en memoria como un slice de bytes ([]byte), obtenido después de descomprimir un archivo o procesar JSON.

Aquí hay un ejemplo simplificado de lo que intento hacer:

package main

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

func main() {
    data := []byte("Hello, World! Это тестовые данные в памяти")

    // ¿Cómo pasar data a una función que espera io.Reader?
    // Intenté pasar data directamente, pero obtengo un error de compilación:
    // 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))
}

Entiendo que []byte y io.Reader son tipos diferentes.