Go中的http响应迭代

I have an HTTP endpoint that returns lines of text. Here is how I'm fetching it.

response, err := client.Do(request)
if err != nil {
    log.Errorf("Error with request: %s", err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
    log.Errorf("Error: %s", err)
}

This is how I'm reading the body. The problem is that I have one large byte array from the reader, but I'm not entirely sure how to convert it from a byte array to a slice of lines.

How would I convert the byte array to a slice of lines?

You can use bytes.Split to break the response body into lines:

 lines := bytes.Split(body, []byte{'
'})  // lines is a [][]byte

You can also use a scanner to iterate over the lines:

response, err := client.Do(request)
if err != nil {
    log.Errorf("Error with request: %s", err)
}
defer response.Body.Close()
s := bufio.NewScanner(response.Body)
for s.Scan() {
    // do something with s.Bytes() or s.Text()
}
if err := s.Err(); err != nil {
    // handle error
}