私のプロジェクトでは、リクエストの応答からのバイト スライスがあります。
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
、どのように変換すればよいでしょうか? 新しいリーダー/ライターを試しましたが、成功しませんでした。
ベストアンサー1
io.Reader
スライスから実装する型を取得するには[]byte
、次のようにします。bytes.NewReader
の中にbytes
パッケージ:
r := bytes.NewReader(byteData)
これは、型の値を返しますbytes.Reader
これはio.Reader
(そしてio.ReadSeeker
) インターフェース。
同じ「型」ではないことを心配する必要はありません。はio.Reader
インターフェースであり、さまざまな型で実装できます。Goのインターフェースについてもう少し詳しく知るには、以下をお読みください。効果的な Go: インターフェースと型。