[go] 바이트 슬라이스를 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어떻게 변환합니까? 나는 새로운 리더 / 작가를 시도했지만 성공하지 못했습니다.



답변

슬라이스 io.Reader에서 구현되는 유형을 얻으려면 패키지 에서 []byte사용할 수 있습니다 .bytes.NewReaderbytes

r := bytes.NewReader(byteData)

이것은 (and ) 인터페이스 bytes.Reader를 구현하는 type 값을 반환합니다 .io.Readerio.ReadSeeker

그들이 같은 “유형”이 아닌 것에 대해 걱정하지 마십시오. io.Reader인터페이스이며 다양한 유형으로 구현할 수 있습니다. Go의 인터페이스에 대해 조금 더 배우려면 Effective Go : Interfaces and Types를 읽으십시오 .


답변

r := strings(byteData)

이것은 또한 차례에 작동 []byteio.Reader


답변