在下面的代码片段中,我将http响应主体'b'解析为func parseGoQuery,这是第一次,但是当我第二次在main()中这样做时,它表明我在func parseGoQuery内部的响应'b'为0。我想我传递了变量'b'的副本,而不是指针,我很困惑...请咨询
resp, _ := client.Get(URL)
b :=resp.Body
defer b.Close() // close Body when the function returns
parseGoQuery("tag1", b) //b is not 0 as expected, good
parseGoQuery("tag2", b) //b is 0 !!!???
这是func parseGoQuery
func parseGoQuery(tag string, b io.Reader) {
fmt.Println(tag,b)
//skipped
}
Response.body的类型为io.Readcloser。因此,一旦您从正文中读取内容,它就会被关闭,并且进一步尝试从它中读取内容将得到零值。您只能从身体读取一次。
因此,将您从正文读取的数据存储在一个变量中,然后将该变量传递给该函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句