在我的项目中,我有一个来自请求响应的字节片。
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,但没有成功。
2条答案
按热度按时间pcrecxhr1#
要从
[]byte
切片获取实现io.Reader
的类型,可以在bytes
包中使用bytes.NewReader
:这将返回一个
bytes.Reader
类型的值,它实现了io.Reader
(和io.ReadSeeker
)接口。不要担心他们不是同一个“类型”。
io.Reader
是一个接口,可以通过许多不同的类型来实现。要了解更多关于Go中的接口,请阅读Effective Go:接口和类型。j8ag8udp2#
创建缓冲区也可以: