Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencipta Instance DB Singleton dengan Kaedah yang Dieksport dalam Go?
Kod yang diberikan tidak membenarkan kaedah untuk diakses pada contoh DB singleton . Pengguna menyasarkan untuk mentakrifkan kaedah dalam singleton dan memanggilnya pada rujukan tunggal mereka.
Untuk mencipta contoh DB tunggal dengan kaedah yang dieksport, ikut kod yang diubah suai ini:
<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 // Add other methods } type manager struct { db *gorm.DB } var Mgr Manager func init() { db, err := gorm.Open("sqlite3", "../articles.db") if err != nil { log.Fatal("Failed to init db:", err) } Mgr = &manager{db: db} } func (mgr *manager) AddArticle(article *article.Article) (err error) { mgr.db.Create(article) if errs := mgr.db.GetErrors(); len(errs) > 0 { err = errs[0] } return }</code>
Menggunakan penyelesaian ini:
Untuk menangkap dan mengembalikan pengecualian daripada gorm.Create(), ubah suai kaedah AddArticle seperti berikut:
<code class="go">func (mgr *manager) AddArticle(article *article.Article) (err error) { if err := mgr.db.Create(article).Error; err != nil { return err } if errs := mgr.db.GetErrors(); len(errs) > 0 { return errs[0] } return nil }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Instance DB Singleton dengan Kaedah yang Dieksport dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!