当我在golang SQL /数据库示例中的" transaction "中阅读" Prepared "语句的示例时。一行显示" \\ danger ",但是提供的代码示例没有其他选择。

我想对下面的查询有更清晰的解释,因为Wiki页上的http://go-database-sql.org/prepared.html

上没有提供太多信息。

如果您在defer stmt.Close()中看到它提及,则表示它很危险,但尚未注释掉以供用户删除。

尽管上面的代码没有问题,因为" defer "将在最后运行代码,但这是否意味着上面的代码是错误的,应将其替换为下面的代码或其他更好的替代代码。

我认为上面的两个代码没有什么区别,但是,如果有任何区别或缺少某些内容,我需要上面的专家建议。


defer语句是确保无论您如何退出函数都可以正常运行的好方法。

在这种特殊情况下,似乎没有关系,因为所有错误处理程序都使用log.Fatal。如果将log.Fatal替换为return语句并删除延迟,现在必须在许多地方进行清理:

如果使用defer,则很难忘记需要清理的地方。