小编Shr*_*tre的帖子

转换struct和byte数组之间的转换

我正在Go中编写一个客户端 - 服务器应用程序.我想在Go中执行类似C的类型转换.

比如Go

type packet struct {
    opcode uint16
    data [1024]byte
}

var pkt1 packet
...
n, raddr, err := conn.ReadFromUDP(pkt1)  // error here
Run Code Online (Sandbox Code Playgroud)

此外,我想执行类似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)
}
Run Code Online (Sandbox Code Playgroud)

struct casting go memcpy

8
推荐指数
3
解决办法
2万
查看次数

标签 统计

casting ×1

go ×1

memcpy ×1

struct ×1