diff options
| author | Rob Pike <r@golang.org> | 2012-02-09 11:42:10 +1100 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2012-02-09 11:42:10 +1100 |
| commit | 025c9a946de654dc3917fc1bfd3ad998fafc0f65 (patch) | |
| tree | 076819a553cdc0a5621f71847abdc531b2b7267b /src/pkg/encoding/binary | |
| parent | 8c4a2ca83b5d1ab04361a15d9380f13077b4dda4 (diff) | |
| download | go-025c9a946de654dc3917fc1bfd3ad998fafc0f65.tar.xz | |
encoding/binary: slices are allowed; say so
Fixes #2629.
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5642069
Diffstat (limited to 'src/pkg/encoding/binary')
| -rw-r--r-- | src/pkg/encoding/binary/binary.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/pkg/encoding/binary/binary.go b/src/pkg/encoding/binary/binary.go index 7f10d40a11..c96c179de6 100644 --- a/src/pkg/encoding/binary/binary.go +++ b/src/pkg/encoding/binary/binary.go @@ -117,11 +117,11 @@ func (bigEndian) String() string { return "BigEndian" } func (bigEndian) GoString() string { return "binary.BigEndian" } // Read reads structured binary data from r into data. -// Data must be a pointer to a fixed-size value or a slice -// of fixed-size values. -// A fixed-size value is either a fixed-size arithmetic +// Data must be a pointer to a decodable value or a slice +// of decodable values. +// A decodable value is either a fixed-size arithmetic // type (int8, uint8, int16, float32, complex64, ...) -// or an array or struct containing only fixed-size values. +// or an array, slice or struct containing only decodable values. // Bytes read from r are decoded using the specified byte order // and written to successive fields of the data. func Read(r io.Reader, order ByteOrder, data interface{}) error { @@ -176,11 +176,11 @@ func Read(r io.Reader, order ByteOrder, data interface{}) error { } // Write writes the binary representation of data into w. -// Data must be a fixed-size value or a pointer to -// a fixed-size value. -// A fixed-size value is either a fixed-size arithmetic +// Data must be an encodable value or a pointer to +// an encodable value. +// An encodable value is either a fixed-size arithmetic // type (int8, uint8, int16, float32, complex64, ...) -// or an array or struct containing only fixed-size values. +// or an array, slice or struct containing only encodable values. // Bytes written to w are encoded using the specified byte order // and read from successive fields of the data. func Write(w io.Writer, order ByteOrder, data interface{}) error { @@ -379,6 +379,7 @@ func (d *decoder) value(v reflect.Value) { for i := 0; i < l; i++ { d.value(v.Index(i)) } + case reflect.Struct: l := v.NumField() for i := 0; i < l; i++ { @@ -434,11 +435,13 @@ func (e *encoder) value(v reflect.Value) { for i := 0; i < l; i++ { e.value(v.Index(i)) } + case reflect.Struct: l := v.NumField() for i := 0; i < l; i++ { e.value(v.Field(i)) } + case reflect.Slice: l := v.Len() for i := 0; i < l; i++ { |
