Datenstrukturen in Go kodieren und dekodieren
In Go ist es häufig erforderlich, Datenstrukturen zur Übertragung in ein Byte-Array zu kodieren und zu dekodieren oder Lagerung. In diesem Artikel werden Techniken zur effizienten und robusten Ausführung dieser Aufgabe untersucht.
Um eine Typumwandlung durchzuführen, verwenden Sie das unsichere Paket mit Vorsicht. Eine sicherere Alternative besteht darin, das Paket „encoding/binary“ zu nutzen, wie unten gezeigt:
<code class="go">// T represents a simple data structure. type T struct { A int64 B float64 } // EncodeT converts the T struct to a byte array. func EncodeT(t T) ([]byte, error) { buf := &bytes.Buffer{} err := binary.Write(buf, binary.BigEndian, t) return buf.Bytes(), err } // DecodeT converts a byte array to a T struct. func DecodeT(b []byte) (T, error) { t := T{} buf := bytes.NewReader(b) err := binary.Read(buf, binary.BigEndian, &t) return t, err }</code>
Beispielverwendung:
<code class="go">t := T{A: 0xEEFFEEFF, B: 3.14} encoded, err := EncodeT(t) if err != nil { panic(err) } decoded, err := DecodeT(encoded) if err != nil { panic(err) } fmt.Printf("Encoded: %x", encoded) fmt.Printf("Decoded: %x %f", decoded.A, decoded.B)</code>
Benutzerdefinierte Konvertierungsfunktionen oder das Paket „encoding/gob“ können ebenfalls verwendet werden für komplexere Anwendungsfälle.
Das obige ist der detaillierte Inhalt vonWie lassen sich Datenstrukturen in Go effizient kodieren und dekodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!