Heim  >  Artikel  >  Backend-Entwicklung  >  Konvertieren Sie die Golang-Struktur in ein Byte

Konvertieren Sie die Golang-Struktur in ein Byte

WBOY
WBOYOriginal
2023-05-10 22:54:361580Durchsuche

Bei der Programmierung sind Serialisierung und Deserialisierung von Daten sehr häufige Aufgaben. In Golang können wir das Paket „encoding/binary“ in der Standardbibliothek verwenden, um Datenstrukturen in Bytesequenzen umzuwandeln, was besonders bei der Datenübertragung und -speicherung nützlich ist. In diesem Artikel wird erläutert, wie Sie mit Golang eine Struktur in eine Bytefolge konvertieren.

1. Struktur in Golang

In Golang ist eine Struktur eine benutzerdefinierte Datenstruktur, die es uns ermöglicht, verschiedene Datentypen zu einem komplexeren Datentyp zu kombinieren. Die Syntax zum Definieren einer Struktur lautet wie folgt:

type 结构体名 struct {
  字段名1 数据类型1
  字段名2 数据类型2
  ……
}

Zum Beispiel können wir eine Personenstruktur definieren, um die Informationen einer Person darzustellen:

type Person struct {
  Name string
  Age int
  Height float64
}

2. Byte-Sequenz in Golang
In Golang können Sie Byte-Slices verwenden, um Wörter darzustellen Abschnitt Sequenz, die eine Datenstruktur in eine Bytefolge zur Übertragung oder Speicherung in einer Datei serialisieren kann. Beispielsweise können wir mit der folgenden Anweisung ein leeres Byte-Slice erstellen:

b := make([]byte, 0)

3. Konvertieren Sie die Struktur in eine Byte-Sequenz

Das Paket „encoding/binary“ in Golang bietet eine Reihe von Tools zum Konvertieren von Golang-Datentypen in Funktionen für Bytefolgen. Für Strukturen können wir die Funktion „binary.Write“ verwenden, um sie in eine Folge von Bytes umzuwandeln. Hier ist ein Beispiel:

package main

import (
  "encoding/binary"
  "fmt"
)

type Person struct {
  Name string
  Age int
  Height float64
}

func main() {
  p := Person{"Tom", 20, 1.8}
  b := make([]byte, 0)

  binary.Write(&b, binary.LittleEndian, p)

  fmt.Println(b)
}

In diesem Beispiel erstellen wir eine Person-Struktur, serialisieren sie im Binärmodus in Byte-Slices und geben die Byte-Slices dann aus. Wir können sehen, dass die Ausgabe lautet:

[3 84 111 109 20 0 0 0 0 0 0 0 0 0 0 0 236 81 184 30 133 235 64]

Diese Ausgabe ist tatsächlich das Ergebnis der Konvertierung von „Tom“, „20“ und „1.8“ in eine Bytesequenz. Hier wird der Binärmodus und der Little-Endian-Modus verwendet (d. h. das Low-Byte wird an der Startposition gespeichert).

Wir können sehen, dass die generierte Bytesequenz die Feldnamen und Typinformationen der Struktur enthält, da diese Informationen während der Deserialisierung bekannt sein müssen, um die Datenstruktur korrekt wiederherzustellen.

4. Bytesequenz in Struktur umwandeln

Um die Bytesequenz in Struktur zu deserialisieren, können wir die Funktion „binary.Read“ verwenden. Hier ist ein Beispiel:

package main

import (
  "bytes"
  "encoding/binary"
  "fmt"
)

type Person struct {
  Name   string
  Age    int
  Height float64
}

func main() {
  p := Person{"Tom", 20, 1.8}
  b := make([]byte, 0)

  binary.Write(&b, binary.LittleEndian, p)

  out := new(Person)
  buf := bytes.NewReader(b)
  binary.Read(buf, binary.LittleEndian, out)

  fmt.Printf("%+v", *out)
}

In diesem Beispiel serialisieren wir zunächst die Person-Struktur mithilfe von „binary.Write“ in Byte-Slices. Anschließend haben wir „bytes.NewReader“ verwendet, um die Bytes in einen Puffer aufzuteilen. Abschließend verwenden wir die Funktion „binary.Read“, um die Daten im Puffer in eine neue Person-Struktur einzulesen und das Ergebnis auszugeben.

In diesem Fall lautet die Ausgabe:

{Name:"Tom", Age:20, Height:1.8}

Dies zeigt, dass wir die Bytesequenz erfolgreich in eine Personenstruktur deserialisiert haben.

Zusammenfassung

In Golang können Sie das Paket „encoding/binary“ verwenden, um Datenstrukturen in Bytesequenzen umzuwandeln. Dies ist sehr nützlich, da wir so Daten auf andere Computer übertragen oder in Dateien speichern können. Um eine Struktur in eine Folge von Bytes umzuwandeln, können wir die Funktion „binary.Write“ verwenden, und um eine Folge von Bytes in eine Struktur zu deserialisieren, können wir die Funktion „binary.Read“ verwenden. Diese Funktionen können verschiedene Datentypen verarbeiten und unterschiedliche Endiannesses unterstützen.

Ich hoffe, dieser Artikel hilft Ihnen dabei, eine Struktur in eine Bytesequenz in Golang umzuwandeln.

Das obige ist der detaillierte Inhalt vonKonvertieren Sie die Golang-Struktur in ein Byte. 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