I believe what he wants, is the usual C trick of defining a struct which represents the wire format (with all the usual caveats). Then cast a char pointer to be an instance of a pointer to that struct. Sort of like this:
It sort of works on x86 chips, but is not so effective on MIPS, PPC, etc where misaligned access are either unavailable, or slow, or even trap and are slower still.
Once one has to handle that sort of situation, and actually copy the data, the lack of language support for such type-punning becomes immaterial.
Oh I see, thanks for the clarification! Personally, I'm fine without that and with something like
func Foo(r io.Reader) {
var m MyStruct
binary.Read(r, binary.LittleEndian, &m)
}
but we may be operating in different contexts where the underlying copy is or isn't a problem. That said, depending on the implementation of the reader passed in, the bytes might be being streamed from elsewhere, in which case the copying is minimised.
Once one has to handle that sort of situation, and actually copy the data, the lack of language support for such type-punning becomes immaterial.