一尘不染

将 byte slice转换为 io.Reader

go

在我的项目中,我有一个来自请求响应的[byte 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 但没有成功。


阅读 248

收藏
2021-11-02

共1个答案

一尘不染

要获取io.Reader[]byte切片实现的类型,您可以bytes.NewReaderbytes包中使用:

r := bytes.NewReader(byteData)

这将返回一个bytes.Reader实现io.Reader(和io.ReadSeeker)接口的类型值。

不要担心它们不是同一个“类型”。io.Reader是一个接口,可以由许多不同的类型实现。要了解有关 Go 中接口的更多信息,请阅读Effective Go:接口和类型

2021-11-02