]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/gob: document allocation/merge behavior
authorRob Pike <r@golang.org>
Thu, 17 Sep 2015 18:17:02 +0000 (11:17 -0700)
committerRob Pike <r@golang.org>
Thu, 17 Sep 2015 22:55:04 +0000 (22:55 +0000)
This is understood, obvious (to me), and well known but has not been clearly documented.

Fixes #11117.

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

index 4d3d0076fbc570a32ef7cdb83ae7d12b15a3bc5f..481c7572d90a8da5f2710722cb810e072b70a139 100644 (file)
@@ -82,6 +82,12 @@ slice has capacity the slice will be extended in place; if not, a new array is
 allocated. Regardless, the length of the resulting slice reports the number of
 elements decoded.
 
+In general, if allocation is required, the decoder will allocate memory. If not,
+it will update the destination variables with values read from the stream. It does
+not initialize them first, so if the destination is a compound value such as a
+map, struct, or slice, the decoded values will be merged elementwise into the
+existing variables.
+
 Functions and channels will not be sent in a gob. Attempting to encode such a value
 at the top level will fail. A struct field of chan or func type is treated exactly
 like an unexported field and is ignored.