在我的项目中,我有一个来自请求响应的字节 slice 。

defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
    log.Println("StatusCode为" + strconv.Itoa(resp.StatusCode))
    return
}

respByte, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("fail to read response data")
    return
}

这有效,但如果我想获得 io.Reader 的响应正文,我该如何转换?我尝试了 newreader/writer 但没有成功。

最佳答案

要从 io.Reader slice 获取实现 []byte 的类型,可以在 bytes.NewReader 包中使用 bytes :

r := bytes.NewReader(byteData)
这将返回一个类型为 bytes.Reader 的值,它实现了 io.Reader (和 io.ReadSeeker )接口(interface)。
不要担心它们不是相同的“类型”。 io.Reader 是一个接口(interface),可以通过多种不同的类型实现。要了解有关 Go 中接口(interface)的更多信息,请阅读 Effective Go: Interfaces and Types

关于go - 将字节 slice 转换为 io.Reader,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29746123/

10-15 22:24