首頁  >  文章  >  後端開發  >  如何在 Go 中將結構體轉換為位元組數組,反之亦然?

如何在 Go 中將結構體轉換為位元組數組,反之亦然?

DDD
DDD原創
2024-10-27 22:02:02619瀏覽

 How to Convert Structs to Byte Arrays and Vice Versa in Go?

Go 結構體和位元組數組之間的轉換

問:如何在Go 中在結構體和位元組數組之間執行類似C 的類型轉換?例如,如何將接收到的網路位元組流直接對應到結構體?

A:encoding/binary 包提供了比unsafe.Pointer 更方便、更安全的替代方案:

<code class="go">// Create a struct and write it.
type T struct {
  A uint32
  B float64
}

t := T{A: 0xEEFFEEFF, B: 3.14}
buf := &bytes.Buffer{}
err := binary.Write(buf, binary.BigEndian, t)

if err != nil {
  panic(err)
}

fmt.Println(buf.Bytes())

// Read into an empty struct.
t = T{}
err = binary.Read(buf, binary.BigEndian, &t)

if err != nil {
  panic(err)
}

fmt.Printf("%x %f", t.A, t.B)</code>

透過利用二進位包,您可以以更安全、更簡潔的方式輕鬆在結構體和位元組數組之間進行轉換,自動處理大小和位元組序。

以上是如何在 Go 中將結構體轉換為位元組數組,反之亦然?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn