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

How to parse copy of variable instead of pointer in go?

在下面的代码片段中,我将 http 响应主体 'b' 解析为 func parseGoQuery 并且第一次没问题,但是当我第二次在 main() 中执行时,它显示响应 'b'在 func parseGoQuery 中为 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 类型。 因此,一旦您从正文中读取,它将关闭,进一步尝试从中读取将给出零值。 您只能从正文中读取一次。

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