我有一个数据包结构,我希望将其序列化为二进制,以便我可以通过线路发送它。

有很多数据包结构,但我会以登录数据包为例:

login struct {
    seq      uint8
    id       uint16
    username [16]string
    password [16]string
    unknown1 [16]byte
}
binary.Write

现在使用此代码:

var buf bytes.Buffer
x := login{
    seq:      2,
    id:       1,
    username: [16]string{"username"},
    password: [16]string{"password"},
}
err := binary.Write(&buf, binary.LittleEndian, x)
if err != nil {
    log.Fatalln(err)
}
binary.Write: invalid type main.login

现在,有没有办法解决这个问题? 有替代方法吗? 就像你如何在C中使用结构并通过网络发送它一样。