Heim >Backend-Entwicklung >Golang >Wie kann ich mehrere Namens-Tags für Felder in einer Go-Struktur definieren?

Wie kann ich mehrere Namens-Tags für Felder in einer Go-Struktur definieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 14:47:11226Durchsuche

How Can I Define Multiple Name Tags for Fields in a Go Struct?

Mehrere Namens-Tags in einer Go-Struktur

Beim Arbeiten mit Strukturen in Go kann es nützlich sein, mehrere Namens-Tags zu definieren, um dasselbe Feld in verschiedenen Kontexten darzustellen. Dies ist besonders nützlich, wenn Sie mit Bibliotheken oder APIs von Drittanbietern arbeiten, die Daten in einem bestimmten Format erwarten.

Problem: Definieren mehrerer Namens-Tags in einer Struktur

Betrachten Sie das folgende Beispiel:

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}

Diese Struktur soll ein Mongo-Datenbankdokument darstellen, wobei das PageId-Feld für MongoDB (bson) und das Meta-Feld markiert ist auch für MongoDB. Beim Codieren dieser Struktur in JSON wird das PageId-Feld jedoch als PageId (in Großbuchstaben) anstelle von pageId gerendert.

Lösung: Leerzeichen als Tag-Trennzeichen verwenden

Um mehrere Namens-Tags für a zu definieren Verwenden Sie im Feld Leerzeichen anstelle von Kommas als Trennzeichen zwischen den Tags. Hier ist eine aktualisierte Version der Struktur:

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

Mit dieser Änderung wird das PageId-Feld sowohl für MongoDB (als pageId) als auch für JSON (als pageId) getaggt. Dadurch wird sichergestellt, dass das Feld bei der Interaktion mit MongoDB oder der Codierung in JSON richtig benannt wird.

Dokumentationsreferenz

Die Go Reflect-Paketdokumentation gibt die Konvention für Tag-Strings an:

By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Namens-Tags für Felder in einer Go-Struktur definieren?. 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