IINM, if the last field of a Go struct has zero size the struct is
extended by at least one byte to prevent taking the address of the
zero sized field that could be outside of the allocated memory area
for the instance of C. (That could, for example, make the precision garbage collector consider the following memory block reachable when it is not.)
If that's the case then the definition above is actually laid out as
type C struct {
Pre uint64
Inner byte
}
Note that the flexible array member concept of C is in most cases not compatible with memory managed
by the Go runtime as described in the documentation for package unsafe. It should be fine in memory
not managed by the Go runtime, though.
-j