首页  >  文章  >  后端开发  >  如何在 Go 中将结构体转换为字节数组,反之亦然?

如何在 Go 中将结构体转换为字节数组,反之亦然?

DDD
DDD原创
2024-10-27 22:02:02618浏览

 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