En mi proyecto, tengo un segmento de bytes de la respuesta de una solicitud.
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
}
Esto funciona, pero si quiero obtener el cuerpo de la respuesta io.Reader, ¿cómo puedo convertir? Probé con el lector / escritor nuevo pero no tuve éxito.

io.Reader? En ese caso, resp.Body ya es de ese tipo.[]bytea en anio.Reader(y io.ReadSeeker)*bytes.Readerque implementa laio.Readerinterfaz.Respuestas:
Para obtener un tipo que se implemente
io.Readerdesde un[]bytesegmento, puede usarlobytes.NewReaderen elbytespaquete:Esto devolverá un valor de tipo
bytes.Readerque implementa la interfazio.Reader(yio.ReadSeeker).No se preocupe por que no sean del mismo "tipo".
io.Readeres una interfaz y se puede implementar de muchos tipos diferentes. Para aprender un poco más sobre las interfaces en Go, lea Go eficaz: interfaces y tipos .fuente
[]byteen unio.Writer? Por ejemplobytes.NewWriter(destination)bytes.Buffer. Hay que crear un búfer que implementaio.Writercomo esto:w := bytes.NewBuffer(destination).govet:cannot use *bytes.NewReader(out.Bytes()) (type bytes.Reader) as type io.Reader in argument to ioutil.NopCloser:(bytes.Readertiene receptores de puntero y lo está convirtiendo de un tipo de puntero (*bytes.Reader) a un tipo base (bytes.Reader). Simplemente elimine el asterisco (*) y debería estar bien :)Esto también funciona para convertirse
[]byteenio.Readerfuente