我是一名Go语言开发者,正在编写一个客户端-服务器应用程序。我想在Go语言中执行类似C语言的类型转换。
例如,在Go语言中:
type packet struct {
opcode uint16
data [1024]byte
}
var pkt1 packet
...
n, raddr, err := conn.ReadFromUDP(pkt1) // error here
我希望能够执行类似于C语言的memcpy()函数,这样可以直接将收到的网络字节流映射到一个结构体中。
例如,使用上面收到的pkt1:
type file_info struct {
file_size uint32 // 4 bytes
file_name [1020]byte
}
var file file_info
if (pkt1.opcode == WRITE) {
memcpy(&file, pkt1.data, 1024)
}
uint
也不是4个字节。Conn.Read
接受一个[]byte
,它在实质上是指向支持数组的智能大小指针。你只需在Go中编写此代码会更加轻松。 - Dustinencoding/gob
包中内置的二进制序列化功能? - dyoo