code: func ConvertAssignRow(row []Value, dest ...interface{}) error {
  	if len(row) != len(dest) {
  		return errors.Newf(
  			"# of row entries %d does not match # of destinations %d",
  			len(row),
  			len(dest))
  	}
  
  	for i := 0; i < len(row); i++ {
  		err := ConvertAssign(row[i], dest[i])
  		if err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // ConvertAssignRow copies a row of values in the list of destinations.  An
  // error is returned if any one of the row's element coping is done between
  // incompatible value and dest types.  The list of destinations must contain
  // pointers.
  // Note that for anything else than *[]byte the value is copied, however if
  // the destination is of type *[]byte it will point the same []byte array as
  // the source (no copying).