From: Rob Pike Date: Tue, 21 Mar 2017 03:24:26 +0000 (-0700) Subject: encoding/gob: document the extra byte after a singleton X-Git-Tag: go1.9beta1~1069 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=67a46cc1636362bea54ab68b521f77a778968ea2;p=gostls13.git encoding/gob: document the extra byte after a singleton 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 --- diff --git a/src/encoding/gob/doc.go b/src/encoding/gob/doc.go index 1536574fed..554d1134ad 100644 --- a/src/encoding/gob/doc.go +++ b/src/encoding/gob/doc.go @@ -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