Avatar ·

如何在 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)` 方法。但我真的需要每次都自己写一个结构体并实现这个方法吗?