1 回答
TA貢獻(xiàn)1887條經(jīng)驗 獲得超5個贊
問題不是寫出切片,因為切片是受支持的。引自binary.Write():
Write 將數(shù)據(jù)的二進(jìn)制表示寫入 w。數(shù)據(jù)必須是固定大小的值或固定大小的切片,或指向此類數(shù)據(jù)的指針。
問題是大小config不固定。它不固定,因為它包含一個切片類型的字段,并且切片的二進(jìn)制表示不固定(取決于它的長度)。
因此支持寫入切片值,由于上述原因,不支持寫入包含切片的復(fù)合類型(例如結(jié)構(gòu))的值。
您可以將字段更改為數(shù)組類型(例如[2]config),但我認(rèn)為這對您來說還不夠。
您可以使用單獨編寫字段,在這種情況下,您可以編寫切片值。encoding/binary
例如:
var bs bytes.Buffer
fmt.Println(binary.Write(&bs, binary.LittleEndian, t.Mode))
fmt.Println(binary.Write(&bs, binary.LittleEndian, t.Data))
這將輸出(在Go Playground上嘗試):
<nil>
<nil>
曾有提議擴展encoding/binary以支持類似案例(請參閱此處),但被拒絕了。encoding/binary是為了簡單的事情。
如果您需要更大的靈活性,請使用encoding/gob(盡管特定于 Go)或使用encoding/json(所有語言都支持)。
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報
