]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/gob: document the extra byte after a singleton
authorRob Pike <r@golang.org>
Tue, 21 Mar 2017 03:24:26 +0000 (20:24 -0700)
committerRob Pike <r@golang.org>
Tue, 21 Mar 2017 04:07:46 +0000 (04:07 +0000)
This paragraph has been added, as the notion was missing from the
documentation.

If a value is passed to Encode and the type is not a struct (or pointer to struct,
etc.), for simplicity of processing it is represented as a struct of one field.
The only visible effect of this is to encode a zero byte after the value, just as
after the last field of an encoded struct, so that the decode algorithm knows when
the top-level value is complete.

Fixes #16978

Change-Id: I5f008e792d1b6fe80d2e026a7ff716608889db32
Reviewed-on: https://go-review.googlesource.com/38414
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/encoding/gob/doc.go

index 1536574fed277119edecac9761be8cf2e1469a56..554d1134ad1670a590699bcc5414f4a17ab93d70 100644 (file)
@@ -175,6 +175,12 @@ the interface value.  (A nil interface value is identified by the empty string
 and transmits no value.) Upon receipt, the decoder verifies that the unpacked
 concrete item satisfies the interface of the receiving variable.
 
+If a value is passed to Encode and the type is not a struct (or pointer to struct,
+etc.), for simplicity of processing it is represented as a struct of one field.
+The only visible effect of this is to encode a zero byte after the value, just as
+after the last field of an encoded struct, so that the decode algorithm knows when
+the top-level value is complete.
+
 The representation of types is described below.  When a type is defined on a given
 connection between an Encoder and Decoder, it is assigned a signed integer type
 id.  When Encoder.Encode(v) is called, it makes sure there is an id assigned for