Hi all,

I'm writing an implementation of the Gob serialization format in
another language, but am seeing some extra bytes that, as far as I can
tell, aren't described in the documentation. For example, if I encode
a simple bool (https://play.golang.org/p/shFJnM3WgM) I get:

> 03 02 00 01

I understand this to mean 03 (remaining bytes) 02 (signed int type ID
for boolean) 00 (???) 01 (uint 1 == true). I don't understand where
the 00 comes from.

Stepping through the code reveals that it's written by the update method:

> // update emits a field number and updates the state to record its value for 
> delta encoding.
> // If the instruction pointer is nil, it does nothing
> func (state *encoderState) update(instr *encInstr)

But this is not a struct, it's a bool, so I'm a bit confused as to why
update would be called in the first place. I'd just assume a 0 field
value is written for everything that's not a struct, but this doesn't
appear to align with the grammar as specified in the docs:

> (byteCount (-type id, encoding of a wireType)* (type id, encoding of a 
> value))*

I've read through the docs four or five times now, and still don't see
where the field number is documented (except for structs); is this a
faiure of the documentation, or am I just missing the obvious?

Thanks,
Sam

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to