我有一個純 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 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消