code: func (row *Row) UseKeys(indexes []int) (err error) {
  	if indexes == nil {
  		return nil
  	}
  	var keys, values []interface{}
  	kLen, vLen := len(row.K), len(row.V)
  	used := make([]bool, kLen+vLen)
  	for _, x := range indexes {
  		if x <= kLen {
  			keys = append(keys, row.K[x-1])
  		} else {
  			keys = append(keys, row.V[x-1-kLen])
  		}
  		used[x-1] = true
  	}
  	for i, k := range row.K {
  		if !used[i] {
  			values = append(values, k)
  		}
  	}
  	for i, v := range row.V {
  		if !used[i+kLen] {
  			values = append(values, v)
  		}
  	}
  	row.K, row.V = keys, values
  	return err
  }
docs: // UseKeys use the indexes[] specified fields as key fields
  // and the rest of fields as value fields