我是 Go 的新手,很抱歉提前提出这个愚蠢的问题!
我正在使用 Gin 框架并希望在同一个处理程序 ( database/sql+ lib/pq)中对数据库进行多个查询
userIds := []int{}
bookIds := []int{}
var id int
/* Handling first query here */
rows, err := pgClient.Query(getUserIdsQuery)
defer rows.Close()
if err != nil {
return
}
for rows.Next() {
err := rows.Scan(&id)
if err != nil {
return
}
userIds = append(userIds, id)
}
/* Handling second query here */
rows, err = pgClient.Query(getBookIdsQuery)
defer rows.Close()
if err != nil {
return
}
for rows.Next() {
err := rows.Scan(&id)
if err != nil {
return
}
bookIds = append(bookIds, id)
}
我有几个关于此代码的问题(任何改进和最佳实践将不胜感激)
defer rows.Close()
在这种情况下,Go 能正确处理吗?我的意思是我rows
稍后会在代码中重新分配变量,所以编译器会跟踪这两个变量并在函数结束时正确关闭吗?
可以重用id
共享变量还是应该在循环内迭代时重新声明它rows.Next()
?
在一个处理程序中进行更多查询的更好方法是什么?我应该有某种Writer
接受查询和切片并用检索到的 ID 填充它的东西吗?
谢谢。
慕容708150
相关分类