code: func (z *Reader) readUint32() (uint32, error) {
  	buf := z.buf[:4]
  	_, err := io.ReadFull(z.src, buf)
  	x := binary.LittleEndian.Uint32(buf)
  	return x, err
  }
docs: // readUint32 reads an uint32 into the supplied buffer.
  // The idea is to make use of the already allocated buffers avoiding additional allocations.