在我的项目中,我有一个来自请求响应的字节切片。
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
的回复主体,我该如何转换?我尝试了新的读者/作者,但没有成功。
答案 0 :(得分:192)
要从io.Reader
切片获取实现[]byte
的类型,您可以在bytes.NewReader
包中使用bytes
:
r := bytes.NewReader(byteData)
这将返回bytes.Reader
类型的值,该值实现io.Reader
(和io.ReadSeeker
)接口。
不要担心他们不一样"键入"。 io.Reader
是一个接口,可以通过许多不同的类型实现。要了解有关Go中接口的更多信息,请阅读Effective Go: Interfaces and Types。
答案 1 :(得分:-8)
r := strings(byteData)
这也可以将[]byte
变为io.Reader