我已经找到了编码/二进制包来处理它,但是它依赖于反射包,因此它不适用于未大写(即未导出)的结构字段。但是我花了一周的时间才发现这个问题,但我仍然有一个问题:如果不应该导出结构字段,如何将它们轻松转储为二进制数据?
编辑:这是示例。如果将大写的Datastruct字段大写,则可以正常工作。但是Datastruct原本是一种抽象类型,所以我不想导出这些字段。
package main
import (
"fmt"
"encoding/binary"
"bytes"
)
type Data struct {
id int32
name [16]byte
}
func main() {
d := Data{Id: 1}
copy(d.Name[:], []byte("tree"))
buffer := new(bytes.Buffer)
binary.Write(buffer, binary.LittleEndian, d)
// d was written properly
fmt.Println(buffer.Bytes())
// try to read...
buffer = bytes.NewBuffer(buffer.Bytes())
var e = new(Data)
err := binary.Read(buffer, binary.LittleEndian, e)
fmt.Println(e, err)
}
哔哔one
相关分类