如何在 Golang 中将字节切片 ([]byte) 转换为 io.Reader?
大家好!我刚开始学习 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)` 方法。但我真的需要每次都自己写一个结构体并实现这个方法吗?