Heim  >  Artikel  >  Backend-Entwicklung  >  Sollte ich „interface{}“ für BSON-Dokumente in Go verwenden?

Sollte ich „interface{}“ für BSON-Dokumente in Go verwenden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 15:12:01609Durchsuche

Should I Use `interface{}` for BSON Documents in Go?

Übergabe von BSON-Dokumenten mit Go

Bei der Arbeit mit Go und MongoDB unter Verwendung des mgo-Pakets kommt es häufig zu Problemen bei der Übergabe von BSON-Dokumenten. Dieser Artikel befasst sich mit einem solchen Problem und konzentriert sich insbesondere auf die Frage, ob interface{} für BSON-Dokumente verwendet werden soll oder nicht.

Problem:

Sie haben ein BSON erstellt Dokument, aber wenn Sie versuchen, es an eine Funktion in einem anderen Paket zu übergeben, das den Typ interface{} annimmt, tritt die Fehlermeldung auf: „Panik: Schnittstelle {} kann nicht als BSON gemarshallt werden.“ Dokument.“

Lösung:

Ihr Problem ergibt sich aus der Tatsache, dass Sie BSON-Dokumente nicht selbst erstellen sollten. Stattdessen können Sie eine Struktur definieren, um das Schema Ihres Dokuments darzustellen, und dann das MGO-Paket verwenden, um das Marshalling und Unmarshaling von BSON-Daten zu verwalten.

In account.go:

Definieren Sie eine Struktur, die Ihr Konto darstellt:

type Account struct {
  Id       bson.ObjectId `bson:"_id"`
  BalanceAmount int
  // Other fields
}

In dbEngine.go:

Aktualisieren Sie die Einfügefunktion, um ein Interface{}-Argument zu akzeptieren:

func Insert(document interface{}) {
  // Establish connection, get collection
  session, err := mgo.Dial("localhost")
  c := session.DB("db_name").C("collection_name")
  err = c.Insert(document)
  // Handle any potential errors
}

In Ihrer Hauptanwendung:

Erstellen Sie eine Instanz der Account-Struktur und fügen Sie sie in die Datenbank ein:

acc := Account{}
acc.Id = bson.NewObjectId()
acc.BalanceAmount = 3
dbEngine.Insert(&acc)

Dieser Ansatz ermöglicht es mgo, die korrekt zu verarbeiten Kodierung und Dekodierung von BSON-Dokumenten, sodass keine manuelle Bearbeitung erforderlich ist.

Das obige ist der detaillierte Inhalt vonSollte ich „interface{}“ für BSON-Dokumente in Go verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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