Frage Was ist die Verwendung von Backtick in Golag Structs Definition? [Duplikat]


Diese Frage hat hier bereits eine Antwort:

type NetworkInterface struct {
    Gateway              string `json:"gateway"`
    IPAddress            string `json:"ip"`
    IPPrefixLen          int    `json:"ip_prefix_len"`
    MacAddress           string `json:"mac"`
    ...
}

Ich bin ziemlich verwirrt, was die Funktion von Inhalten im Backtick ist, wie json:"gateway".

Ist es nur ein Kommentar, wie //this is the gateway?


75
2018-06-06 09:15


Ursprung


Antworten:


Sie können Go-Strukturen zusätzliche Metainformationen in Form von Tags hinzufügen. Hier sind einige Beispiele für Anwendungsfälle.

In diesem Fall json:"gateway" wird von der verwendet JSON-Paket um den Wert von zu kodieren Gateway in den Schlüssel gateway im entsprechenden json-Objekt.

Beispiel:

n := NetworkInterface{
   Gateway : "foo"
}
json.Marshal(n)
// will output `{"gateway":"foo",...}`

42
2018-06-06 09:23



Sie sind Stichworte:

Auf eine Felddeklaration kann ein optionales String-Literal-Tag folgen,   Dies wird zu einem Attribut für alle Felder in den entsprechenden   Felddeklaration. Die Tags werden durch eine Reflektion sichtbar gemacht   Schnittstelle und nehmen an der Typidentität für Strukturen teil, sind aber ansonsten   ignoriert.

// A struct corresponding to the TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers.
struct {
  microsec  uint64 "field 1"
  serverIP6 uint64 "field 2"
  process   string "field 3"
}

Sehen diese Frage und Antwort für eine ausführlichere Erklärung und Antwort.

Das Zitate zurück werden verwendet, um rohe Zeichenkettenliterale zu erzeugen, die jede Art von Zeichen enthalten können:

Raw-String-Literale sind Zeichenfolgen zwischen umgekehrten Anführungszeichen ``.   Innerhalb der Anführungszeichen ist jedes Zeichen legal, mit Ausnahme des Anführungszeichens.


49
2018-06-06 09:23