如何在go中解析变量的副本而不是指针?

时间:2016-11-24 17:53:43

标签: go goquery

在下面的代码片段中,我将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
}

1 个答案:

答案 0 :(得分:3)

Response.body的类型为io.Readcloser。 因此,一旦你从身体中读取它,它将被关闭,并且进一步尝试从它读取将给出零值。 你只能从身体上读一次。

因此,将您从body读取的数据存储在变量中,并将该变量传递给该函数。