据binary.Write 的 api 描述,Data 必须是一个固定尺寸的值或者是固定尺寸的slice,或者是一个指针。
1 2 3
//Data must be a fixed-size value or a slice of fixed-size // values, or a pointer to such data. func Write(w io.Writer, order ByteOrder, data interface{}) error
从字节流中读取数值是一个相反的过程:
1 2 3 4 5 6
var f int32 var g,h bool binary.Read(buf, binary.LittleEndian,&f) binary.Read(buf, binary.LittleEndian,&g) binary.Read(buf, binary.LittleEndian,&h) fmt.Printf("%d,%v,%v",f,g,h)
以上输出: 0,false,true— PASS: TestBinary (0.00s)
需要注意的是,data需要传入指针类型或者是固定尺寸的slice也可以。
1 2 3
//Data must be a pointer to a fixed-size value or a slice // of fixed-size values. func Read(r io.Reader, order ByteOrder, data interface{}) error