code: func partitionKeyBuilder(pk *dosa.PrimaryKey, values map[string]dosa.FieldValue) (string, error) {
  	encoder := encoding.NewGobEncoder()
  	var encodedKey []byte
  	for _, k := range pk.PartitionKeys {
  		if v, ok := values[k]; ok {
  			encodedVal, _ := encoder.Encode(v)
  			encodedKey = append(encodedKey, encodedVal...)
  		} else {
  			return "", errors.Errorf("Missing value for partition key %q", k)
  		}
  	}
  	return string(encodedKey), nil
  }
docs: // partitionKeyBuilder extracts the partition key components from the map and encodes them,
  // generating a unique string. It uses the encoding/gob method to make a byte array as the
  // key, and returns this as a string