Mencipta Instance DB Singleton dengan Kaedah
Kod asal yang disediakan mengandungi pelaksanaan singleton, tetapi tidak mempunyai kaedah yang boleh dipanggil pada contoh singleton . Artikel ini menunjukkan cara menambah singleton yang disediakan dengan kaedah dan menangani soalan yang berkaitan dengan pengendalian ralat.
Pelaksanaan Singleton yang disemak dengan Kaedah
Dalam kod yang dikemas kini, kami mentakrifkan Pengurus antara muka yang dieksport dengan kaedah yang dikehendaki (AddArticle dalam kes ini). Kami kemudian mencipta pengurus jenis pelaksana yang tidak dieksport. Pembolehubah global Mgr jenis antara muka dimulakan dalam fungsi package init(), memastikan ia dibuat seketika sahaja.
<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>
Menggunakan Singleton
The Contoh Mgr kini boleh digunakan untuk menambah artikel pada pangkalan data:
<code class="go">import "dbprovider" if err := dbprovider.Mgr.AddArticle(someArticle); err != nil { // Handle error }</code>
Pengendalian Ralat
Untuk menangkap dan mengembalikan pengecualian daripada gorm.Create(), kami menyemak ralat dikembalikan oleh gorm.Create().Ralat. Jika ralat berlaku, ia dikembalikan; jika tidak, nil dikembalikan.
Kesimpulan
Pelaksanaan yang disemak ini mencipta contoh DB tunggal dengan kaedah yang boleh dipanggil pada rujukan tunggal. Ia juga menunjukkan cara mengendalikan pengecualian daripada gorm.Create().
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Instance DB Singleton dengan Kaedah dan Pengendalian Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!