如果我们将数据库/ sql行对象重新分配给新Query()的结果,会发生什么?它会自动关闭吗?还是我们应该自己关闭它?

时间:2019-02-11 09:43:47

标签: postgresql go

我正在使用Golang处理postgresql,但是我不得不做几个查询。如果我将每个查询的结果存储在同一个变量中,我们将其称为“行”,每次将该变量重新分配给新的查询结果,它将自动关闭上一行吗?还是我应该每次手动关闭它们?如果我应该手动关闭它们,如果每次都推迟row.Close()会发生什么情况?那有必要吗?

2 个答案:

答案 0 :(得分:0)

如何再次在行Rows.Close()前调用you assign to

不,Rows.Close()不会被重新分配自动调用。如果您执行多个 different 查询,请使用 different 变量保存每个查询返回的行。分配后,分别致电defer rows.Close()

答案 1 :(得分:0)

您需要在每次重新分配前致电rows.Close()。通过这种方式,您可以从“行”指针的内容中释放内存。 另外,请注意defer rows.Close(),因为:

  1. 您将仅在函数结束时释放行,而不是立即释放行。请记住这一点。
  2. 如果rows不是指针-它将仅对最后分配的对象调用Close()