在我的项目中,我有一个来自请求响应的字节 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/