使用方法建立單例資料庫實例
提供的原始程式碼包含單例實現,但缺少可以在單例實例上呼叫的方法。本文示範如何使用方法來增強提供的單例,並解決與錯誤處理相關的問題。
使用方法修訂單例實作
在更新的程式碼中,我們定義了一個使用所需的方法匯出介面管理員(在本例中為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中文網其他相關文章!