mirror of
https://github.com/golang/go
synced 2024-11-12 09:20:22 -07:00
gob: document the byte count used in the encoding of values.
R=rsc CC=golang-dev https://golang.org/cl/3641041
This commit is contained in:
parent
8b64cd9c5e
commit
9f6de01d8d
@ -70,7 +70,7 @@ operation will fail.
|
||||
Structs, arrays and slices are also supported. Strings and arrays of bytes are
|
||||
supported with a special, efficient representation (see below).
|
||||
|
||||
Interfaces, functions, and channels cannot be sent in a gob. Attempting
|
||||
Functions and channels cannot be sent in a gob. Attempting
|
||||
to encode a value that contains one will fail.
|
||||
|
||||
The rest of this comment documents the encoding, details that are not important
|
||||
@ -202,9 +202,14 @@ priori, as well as the basic gob types int, uint, etc. Their ids are:
|
||||
// 22 is slice of fieldType.
|
||||
mapType 23
|
||||
|
||||
Finally, each message created by a call to Encode is preceded by an encoded
|
||||
unsigned integer count of the number of bytes remaining in the message. After
|
||||
the initial type name, interface values are wrapped the same way; in effect, the
|
||||
interface value acts like a recursive invocation of Encode.
|
||||
|
||||
In summary, a gob stream looks like
|
||||
|
||||
((-type id, encoding of a wireType)* (type id, encoding of a value))*
|
||||
(byteCount (-type id, encoding of a wireType)* (type id, encoding of a value))*
|
||||
|
||||
where * signifies zero or more repetitions and the type id of a value must
|
||||
be predefined or be defined before the value in the stream.
|
||||
|
Loading…
Reference in New Issue
Block a user