code: func (c *Cache) serializeItem(item *itemWithExp) ([]byte, error) {
  	blob, err := c.Marshal(item.val)
  	if err != nil {
  		return nil, err
  	}
  
  	var deadline uint64
  	if !item.exp.IsZero() {
  		deadline = uint64(item.exp.Unix())
  	}
  
  	// <version_byte> + <uint64 deadline timestamp> + <blob>
  	output := make([]byte, 9+len(blob))
  	output[0] = formatVersionByte
  	binary.LittleEndian.PutUint64(output[1:], deadline)
  	copy(output[9:], blob)
  	return output, nil
  }
docs: // serializeItem packs item and its expiration time into a byte blob.