通常我写这样的东西
rows := db.MyPgConn.QueryRows(`SELECT * FROM bla`) // or any other query
for rows.Next() { // if there are result
// rows.Scan(
// do custom operation
}
rows.Close() // close recordset
Run Code Online (Sandbox Code Playgroud)
但是那样的话,我有可能忘记写rows.Close()这样的代码,这可能会使可用连接/套接字的数量耗尽,有没有更好的方法来做到这一点?
Godefer正是为此目的而引入的。
rows := db.MyPgConn.QueryRows(`SELECT * FROM bla`) // or any other query
defer rows.Close()
for rows.Next() { // if there are result
// rows.Scan(
// do custom operation
}
Run Code Online (Sandbox Code Playgroud)
从文档:
推迟对诸如此类的函数的调用
Close有两个优点。首先,它保证您永远不会忘记关闭文件,如果您稍后编辑该函数以添加新的返回路径,则很容易犯这个错误。其次,这意味着收盘价位于开盘价附近,这比将其放在函数的末尾要清晰得多。
| 归档时间: |
|
| 查看次数: |
2300 次 |
| 最近记录: |