源代码如下:

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {


//模拟ios客户端发送get请求
	client := new(http.Client)
	reg, err := http.NewRequest("GET",  `https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?cc=cn&genreId=36&popId=27`, nil)
	if err != nil {
		fmt.Println("Error1:", err)
		return
	}
	reg.Header.Set(`HTTP`, `2.0`)
	reg.Header.Set(`Accept`, `*/*`)
	reg.Header.Set(`Accept-Language`, `zh-cn`)
	reg.Header.Set(`User-Agent`, `AppStore/2.0 iOS/7.1.2 model/iPod5,1 build/11D257 (4; dt:81)`)
	reg.Header.Set(`Host`, `itunes.apple.com`)
	reg.Header.Set(`Connection`, `keep-alive`)
	reg.Header.Set(`X-Apple-Store-Front`, `143465-19,21 t:native`)
	reg.Header.Set(`X-Dsid`, `932530590`)
	//reg.Header.Set(`Cookie`, `xp_ci=3z1E7umazD0Dz5SBzCwNzB7weVKgD; s_vi=[CS]v1|29F61F868501299A-60000114E000452B[CE]; Pod=20; itspod=20; xt-src=b; xt-b-ts-932530590=1408324780262; mz_at_ssl-932530590=AwUAAAFRAAER1gAAAABT8vlrAo2EAZQvwAJjChIlGtIxIKYErLQ=; mz_at0-932530590=AwQAAAFRAAER1gAAAABT8VSrdHM0dXgdzosavj4+sT0AJfhYBx4=; wosid-lite=qQmZVeBH9vj91TakAeKEZg; ns-mzf-inst=35-163-80-118-68-8171-202429-20-nk11; X-Dsid=932530590`)

//执行get请求
	resp, err := client.Do(reg)
	defer resp.Body.Close()
	if err != nil {
		fmt.Println("Error2:", err)
		return
	}

//分隔符
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return
	}
	fmt.Println(string(body))
}



可以看到最后打印出的是个json。

我的问题是:在分隔符处,json已经存放在resp.Body里了。我们知道golang对json的处理是要转换成[]byte的形式的。可这里如果先用

body, err := ioutil.ReadAll(resp.Body)

然后再将body转换成string类型,最后再将string类型转换为[]btyte的形式,感觉上很麻烦,而且性能上经过这几次转换也有一定消耗。

在分隔符处,是否有更简便的方案将resp.Body内的json转换为[]byte的形式以方便后续的处理呢?