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

标签 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
}

最佳答案

Response.body 是 io.Readcloser 类型。 因此,一旦您从正文中读取,它将关闭,进一步尝试从中读取将给出零值。 您只能从正文中读取一次。

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

关于go - 如何解析变量的副本而不是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792324/

相关文章:

go - r.Handle : missing method ServeHTTP error 参数中的 http.Handler 值

networking - Go 中的服务器,重定向到标准输出

go - `gorm`获取更新ID

html - 如何使用 golang 将 HTML 表格转换为数组

jquery - 使用类选择器使用Goquery解析HTML时,我在做错什么?

golang, combine 2 方法内容相同

json - 将 json null 解码为 NullString 的指针

goquery:到达另一个元素时停止解析

GoQuery 选择提取器不工作

go - 如何使用GoQuery查找具有特定ID的元素