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

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

DDD
發布: 2024-10-27 22:02:02
原創
740 人瀏覽過

 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板