Что произойдет, если мы переназначим объект строки базы данных / sql на результат нового Query ()?Это закрывает это автоматически?Или мы должны закрыть это сами? - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю с postgresql, используя Golang, и я нахожусь в ситуации, когда мне нужно выполнить несколько запросов.Если я сохраню результаты каждого запроса в одной и той же переменной, назовем ее «строками», переназначая эту переменную каждый раз новому результату запроса. Будет ли она автоматически закрывать предыдущие строки?Или мне каждый раз закрывать их вручную?И если я должен закрыть их вручную, что произойдет, если я откладываю rows.Close () каждый раз?Это так необходимо?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вам нужно звонить rows.Close() перед каждым переназначением.Таким образом вы освободите память от содержимого указателя на «строки».Также будьте осторожны с defer rows.Close(), потому что:

  1. Вы освободите строки только в конце функции, а не сразу.Просто помните об этом.
  2. Если rows не указатель - он вызовет Close() только для последнего назначенного объекта.
0 голосов
/ 11 февраля 2019

Как насчет вызова Rows.Close() * до you assign to row` снова?

И нет, Rows.Close() не вызывается автоматически при переназначении.Если вы выполняете несколько разных запросов, используйте разные переменные для хранения строк, возвращаемых каждым.Вызовите defer rows.Close() для каждого после назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...