バイトスライスを io.Reader に変換する 質問する

バイトスライスを io.Reader に変換する 質問する

私のプロジェクトでは、リクエストの応答からのバイト スライスがあります。

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: インターフェースと型

おすすめ記事