Heim  >  Artikel  >  Backend-Entwicklung  >  Kodierungs- und Dekodierungstechniken für Strukturtypen in Golang-Funktionen

Kodierungs- und Dekodierungstechniken für Strukturtypen in Golang-Funktionen

王林
王林Original
2023-05-15 23:21:11943Durchsuche

Golang ist eine sehr leistungsfähige Programmiersprache, die viele integrierte Typen und Funktionen bietet, um Programmierern dabei zu helfen, schnell effizienten Code zu schreiben. Unter diesen wird der Strukturtyp sehr häufig verwendet. Wenn es um Netzwerkkommunikation, Datenspeicherung und -übertragung usw. geht, müssen wir Strukturtypdaten normalerweise zur Übertragung in Binärdaten codieren oder in eine Zeichenfolge im JSON-Format serialisieren. In diesem Artikel werden einige Codierungs- und Decodierungstechniken für den Strukturtyp von Golang-Funktionen vorgestellt.

  1. Definition des Strukturtyps

In Golang erfordert die Definition des Strukturtyps die Verwendung der Schlüsselwörter type und struct. Im Folgenden wird beispielsweise ein Personenstrukturtyp definiert, der zwei Felder enthält: Name und Alter:

type Person struct {
    Name string
    Age int
}
  1. JSON-Kodierung und -Dekodierung

JSON ist ein leichtes, einfach zu lesendes und zu schreibendes Datenaustauschformat. In Golang können wir die Funktionen Marshal() und Unmarshal() im JSON-Paket verwenden, um die JSON-Kodierung und -Dekodierung von Strukturtypen zu implementieren.

  • JSON-Codierung

Bei der Codierung müssen wir den Strukturtyp in ein Byte-Array vom Typ []Byte konvertieren, was über die Funktion json.Marshal() erreicht werden kann. Im folgenden Beispiel wird beispielsweise eine Instanz p des Typs Person in eine Zeichenfolge im JSON-Format codiert:

p := Person{"Tina", 28}
jsonData, _ := json.Marshal(p)
fmt.Println(string(jsonData))   // {"Name":"Tina","Age":28}
  • JSON-Decodierung

Beim Decodieren müssen wir die JSON-Zeichenfolge in einen Strukturtyp analysieren. Dies kann durch die Funktion json.Unmarshal() erreicht werden. Das folgende Beispiel dekodiert beispielsweise die JSON-Zeichenfolge jsonStr in eine Person-Typ-Instanz:

jsonStr := `{"Name":"Tina", "Age": 28}`
var p Person
_ = json.Unmarshal([]byte(jsonStr), &p)
fmt.Println(p)  // {Tina 28}
  1. Byte-Sequenzkodierung und -Dekodierung

Im Prozess der Netzwerkkommunikation oder Datenspeicherung müssen wir auch den Strukturtyp in ein Byte serialisieren Reihenfolge. Um beispielsweise die Person-Typ-Instanz p in die Byte-Sequenz byteData zu serialisieren:

buf := new(bytes.Buffer)
binary.Write(buf, binary.LittleEndian, &p)
byteData := buf.Bytes()
fmt.Printf("%x
", byteData)   // 54696e61001c0000

Wir verwenden die Funktionen bytes.Buffer und Binary.Write(), um den Strukturtyp p in die Byte-Sequenz byteData zu serialisieren. Der zweite Parameter der Funktion „binary.Write()“ gibt die Verarbeitungsmethode der Bytereihenfolge an, hier wird das LittleEndian-Format verwendet. 🔜 in RPC-Aufrufen und wird häufig während der Datenübertragung verwendet. In Golang wird das gob-Paket auch für die Gob-Kodierung und -Dekodierung bereitgestellt.

Gob-Codierung
  1. Wir können die Funktion gob.NewEncoder() verwenden, um eine Encoder-Instanz zu erstellen, und dann ihre Encode()-Methode verwenden, um den Strukturtyp in eine Folge von Bytes zu codieren. Codieren Sie beispielsweise eine Instanz p des Typs Person in eine Bytesequenz byteData:
var q Person
err := binary.Read(bytes.NewReader(byteData), binary.LittleEndian, &q)
if err != nil {
    fmt.Println(err)
}
fmt.Println(q)  // {Tina 28}

Wir verwenden die Funktionen bytes.Buffer und gob.NewEncoder(), um den Strukturtyp p in eine Bytesequenz byteData zu codieren.

  • Gob-Dekodierung

Beim Dekodieren müssen wir auch das Gob-Paket verwenden. Erstellen Sie eine Decoder-Instanz und verwenden Sie deren Decode()-Methode, um eine Folge von Bytes zu dekodieren. Dekodieren Sie beispielsweise die codierten ByteData im obigen Beispiel in eine Instanz q des Personentyps:

var byteData bytes.Buffer
enc := gob.NewEncoder(&byteData)
err := enc.Encode(&p)
if err != nil {
    fmt.Println(err)
}
fmt.Printf("%x
", byteData.Bytes())   // 026864073544696e61001c

Zusammenfassung

    Der Strukturtyp ist ein häufig verwendeter Datentyp in Golang, wenn es um Netzwerkkommunikation sowie Datenspeicherung und -übertragung geht Der Strukturtyp muss zur Übertragung in Binärdaten codiert oder in eine Zeichenfolge serialisiert werden. In diesem Artikel werden einige Kodierungs- und Dekodierungstechniken für Strukturtypen von Golang-Funktionen vorgestellt, darunter JSON-Kodierung und -Dekodierung, Bytesequenz-Kodierung und -Dekodierung sowie Gob-Kodierung und -Dekodierung. Mithilfe dieser Techniken können wir Datenübertragungs- und Speicheraufgaben schnell und effizient erledigen.

Das obige ist der detaillierte Inhalt vonKodierungs- und Dekodierungstechniken für Strukturtypen in Golang-Funktionen. 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