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

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

DDD
发布: 2024-10-27 22:02:02
原创
718 人浏览过

 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板