From 67a46cc1636362bea54ab68b521f77a778968ea2 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Mon, 20 Mar 2017 20:24:26 -0700 Subject: [PATCH] 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 --- src/encoding/gob/doc.go | 6 ++++++ 1 file changed, 6 insertions(+) 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 -- 2.48.1