Wie erstelle ich eine Singleton-DB-Instanz mit exportierten Methoden in Go?

Linda Hamilton
Freigeben: 2024-11-02 09:04:03
Original
302 Leute haben es durchsucht

How to Create a Singleton DB Instance with Exported Methods in Go?

So erstellen Sie eine Singleton-DB-Instanz mit exportierten Methoden

Problem

Der bereitgestellte Code ermöglicht keinen Zugriff auf Methoden auf der Singleton-DB-Instanz . Benutzer möchten Methoden im Singleton definieren und sie in ihrer Singleton-Referenz aufrufen.

Lösung

Um eine Singleton-DB-Instanz mit exportierten Methoden zu erstellen, folgen Sie diesem geänderten Code:

<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>
Nach dem Login kopieren

Verwendung dieser Lösung:

  • Die Manager-Schnittstelle definiert die exportierten Methoden, auf die Clients zugreifen können.
  • Die Manager-Struktur implementiert die Schnittstelle.
  • Eine exportierte globale Variable Mgr vom Typ Manager wird mit einer init()-Funktion initialisiert, um sicherzustellen, dass dies nur einmal erfolgt.
  • Clients können Mgr verwenden, um Methoden auf der Singleton-DB-Instanz aufzurufen, wie z. B. AddArticle.

Ausnahmebehandlung

Um Ausnahmen von gorm.Create() abzufangen und zurückzugeben, ändern Sie die AddArticle-Methode wie folgt:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Singleton-DB-Instanz mit exportierten Methoden in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!