code: func NewKeyFormat(prefix string, layout ...int) (*KeyFormat, error) {
  	kf := &KeyFormat{
  		prefix: Prefix(prefix),
  		layout: layout,
  	}
  	err := kf.init()
  	if err != nil {
  		return nil, err
  	}
  	return kf, nil
  }
docs: // Create a []byte key format based on a single byte prefix and fixed width key segments each of whose length is
  // specified by by the corresponding element of layout. A final segment length of 0 can be used to indicate a variadic
  // final element that may be of arbitrary length.
  //
  // For example, to store keys that could index some objects by a version number and their SHA256 hash using the form:
  // 'c<version uint64><hash [32]byte>' then you would define the KeyFormat with:
  //
  //  var keyFormat = NewKeyFormat('c', 8, 32)
  //
  // Then you can create a key with:
  //
  //  func ObjectKey(version uint64, objectBytes []byte) []byte {
  //  	hasher := sha256.New()
  //  	hasher.Sum(nil)
  //  	return keyFormat.Key(version, hasher.Sum(nil))
  //  }}