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