Подтвердить что ты не робот

Преобразование массива байтов в io.read в golang

В моем проекте у меня есть массив байтов из ответа на запрос.

 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.read, как мне преобразовать? Я попробовал newreader/writer, но не был успешным.

4b9b3361

Ответ 1

Чтобы получить тип, реализующий io.Reader из фрагмента []byte, вы можете использовать bytes.NewReader в bytes:

r := bytes.NewReader(byteData)

Это вернет значение типа bytes.Reader, которое реализует io.Readerio.ReadSeeker).

Не беспокойтесь о том, что они не являются одним и тем же "типом". io.Reader - это интерфейс и может быть реализован различными типами. Чтобы узнать немного о интерфейсах в Go, прочитайте Эффективный переход: интерфейсы и типы.

Ответ 2

r: = строки (byteData)

Это также работает, чтобы повернуть [] байт в io.reader