我有一个纯 TCP 服务器,我的客户端发送一个字节:1= 小端编码,0= 大端编码。我做了类似的事情(只有这里有趣的部分)reader := bufio.NewReader(conn)otherIsLittleEndian, err := reader.ReadByte()if err != nil { panic(err)}var encoding = struct {}{}if otherIsLittleEndian == 1 { encoding = binary.LittleEndian} else { encoding = binary.BigEndian}然后这是不起作用的部分:rnd := rand.Uint64()buf := new(bytes.Buffer)_ = binary.Write(buf, encoding, rnd) // not working最后一行不起作用,但如果我用以下代码替换它,它会起作用,但我不想为每个Write()调用都这样做:if otherIsLittleEndian == 1 { _ = binary.Write(buf, binary.LittleEndian, rnd)} else { _ = binary.Write(buf, binary.BigEndian, rnd)}解决办法是什么?
1 回答

慕斯709654
TA贡献1840条经验 获得超5个赞
将编码变量声明为 type binary.ByteOrder。
var encoding binary.ByteOrder
if otherIsLittleEndian == 1 {
encoding = binary.LittleEndian
} else {
encoding = binary.BigEndian
}
正如错误消息告诉您的那样, to 的参数binary.Write是 a binary.ByteOrder,而不是 a struct{}。
和值实现接口(binary.LittleEndian文档)。binary.BigEndianbinary.ByteOrder
- 1 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消