It would appear that neither the encoder nor decoder attempt to handle booleans.
Proposed behavior:
CBool bool // would be decoded as an 8-bit boolean, like C.
1Bit bool `struct:"uint8:1"` // single bit boolean
1BitAlt bool `struct:"bool:1"` // another single bit boolean
32Bit bool `struct:"uint32"` // 32-bit integer boolean
Zero is translated into false.
Anything else is translated into true.
In encoding, true is translated to 1.
If additional behaviors are needed, they should be implemented as flags most likely.
It would appear that neither the encoder nor decoder attempt to handle booleans.
Proposed behavior: