使用方法创建单例数据库实例
提供的原始代码包含单例实现,但缺少可以在单例实例上调用的方法。本文演示了如何使用方法来增强提供的单例,并解决与错误处理相关的问题。
使用方法修订单例实现
在更新的代码中,我们定义了一个使用所需的方法导出接口管理器(在本例中为 AddArticle)。然后我们创建一个未导出的实现类型管理器。接口类型的全局变量 Mgr 在包 init() 函数中初始化,确保它只实例化一次。
<code class="go">package dbprovider import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" "rest/article" "log" ) type Manager interface { AddArticle(article *article.Article) error } type manager struct { db *gorm.DB } var Mgr Manager // Global variable of the interface type func init() { db, err := gorm.Open("sqlite3", "../articles.db") if err != nil { log.Fatal("Failed to initialize database:", err) } Mgr = &manager{db: db} } func (mgr *manager) AddArticle(article *article.Article) error { if err := mgr.db.Create(article).Error; err != nil { return err } return nil }</code>
使用 Singleton
Mgr 实例现在可用于向数据库添加文章:
<code class="go">import "dbprovider" if err := dbprovider.Mgr.AddArticle(someArticle); err != nil { // Handle error }</code>
错误处理
要捕获并返回 gorm.Create() 的异常,我们检查gorm.Create().Error 返回的错误。如果发生错误,则返回;
结论
此修订的实现创建了一个单例数据库实例,其中包含可以在单例引用上调用的方法。它还演示了如何处理 gorm.Create() 的异常。
以上是如何使用方法和错误处理创建单例数据库实例?的详细内容。更多信息请关注PHP中文网其他相关文章!