将 byte slice转换为 io.Reader
技术问答
259 人阅读
|
0 人回复
|
2023-09-12
|
在我的项目中,我有一个来自请求回应的人[byte slice。3 r& l0 e0 E" W" l3 D3 q6 l
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}' o& ~* a* t3 d4 g! n) b
这是有效的,但如果我想得到回应的文本io.Reader,如何转换?我试过 newreader/writer 但没有成功。; q, o/ z/ r9 k% N6 |. [0 t% v
( K4 t, ^8 I2 }" j8 h2 Q 解决方案:
! j; F* y% c2 A' X* G2 Z 要获取io.Reader从[]byte你可以实现切片的类型bytes.NewReader在bytes包中使用:. [( k" I: M7 O" ~! ]% ^. N* u- |
r := bytes.NewReader(byteData)
4 Q! D. s4 C" U& ? 这将返回一个bytes.Reader实现io.Reader(和io.ReadSeeker)接口类型值。# f' M9 e" P7 O' u* V
不要担心它们不是同一种类型。io.Reader它是一个可以由许多不同类型实现的接口。Go请阅读 中接口的更多信息Effective Go:接口和类型。 |
|
|
|
|
|