Go 中資料結構的編解碼
Go 中常需要將資料結構編解碼為位元組數組進行傳輸或儲存。本文探討了高效率、穩健地執行此任務的技術。
要執行型別轉換,請謹慎使用不安全的套件。更安全的選擇是利用編碼/二進位包,如下所示:
<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>
用法範例:
<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>
也可以使用自訂轉換函數或編碼/gob 套件對於更複雜的用例。
以上是如何在Go中有效率地編碼和解碼資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!