メソッドを使用したシングルトン DB インスタンスの作成
提供された元のコードにはシングルトン実装が含まれていますが、シングルトン インスタンスで呼び出すことができるメソッドがありません。この記事では、提供されたシングルトンをメソッドで拡張する方法を示し、エラー処理に関連する質問に対処します。
メソッドを使用した改訂されたシングルトン実装
更新されたコードでは、エクスポートされたインターフェース Manager と必要なメソッド (この場合は AddArticle)。次に、エクスポートされていない実装タイプ マネージャーを作成します。インターフェイス タイプのグローバル変数 Mgr は、パッケージの init() 関数で初期化され、インスタンス化が 1 回だけ行われるようにします。
<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>
シングルトンの使用
Mgr インスタンスを使用してデータベースに記事を追加できるようになりました。
<code class="go">import "dbprovider" if err := dbprovider.Mgr.AddArticle(someArticle); err != nil { // Handle error }</code>
エラー処理
gorm.Create() からの例外をキャッチして返すために、次のチェックを行います。 gorm.Create().Error によって返されるエラー。エラーが発生した場合は、エラーが返されます。それ以外の場合は、nil が返されます。
結論
この改訂された実装では、シングルトン参照で呼び出すことができるメソッドを備えたシングルトン DB インスタンスが作成されます。 gorm.Create().
からの例外を処理する方法も示します。以上がメソッドとエラー処理を備えたシングルトン DB インスタンスを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。