我找不到通过GO将结构布局到字节数组编程的方法。 我正在为GoBGP服务编程扩展。我想通过GoBGP API为路由设置社区。 More about BGP and communities。
我的情况:
我正在尝试发送32位数字。首先,16位被解释为AS号,其他16位为社区。 API具有uint32的接口来设置所有这些数据。我想要一个简单的结构,例如:
type routeCommunity struct {
AS uint16
Community uint16
}
我正在努力将此结构数据传递给uint32变量。我想将其布局为字节数组,然后可以从中制作uint32。
在C ++中,我将拥有一个指向char数组的结构指针,并继续使用该结构,最后,我将发送char数组。
如何使其在Golang中实现?
答案 0 :(得分:2)
您可以使用“不安全”包将结构传递给uint32变量:
func (rc *routeCommunity) bits() uint32 {
return *(*uint32)(unsafe.Pointer(rc))
}
https://play.golang.org/p/AQeeoYUn7o0
UPD:
请记住,位的位置取决于结构字段的顺序。 变量的低两个字节包含第一个字段值,高两个字节包含第二个字段值。