func NewRowsWithRows(rows driver.Rows) *Rows {
	var values [][]driver.Value
	columns := rows.Columns()
	fieldMap := make(map[string]int)
	for i, column := range columns {
		fieldMap[column] = i
	}
	row := make([]driver.Value, len(columns))
	for rows.Next(row) == nil {
		r := make([]driver.Value, len(columns))
		_ = copy(r, row)
		values = append(values, r)
	}
	return &Rows{
		columns,
		fieldMap,
		values,
	}
}
NewRowsWithRows returns *Rows, it builds from given rows
package result
import (
	"database/sql/driver"
	"fmt"
	"reflect"
	"github.com/pkg/errors"
	"github.com/romberli/go-util/common"
	"github.com/romberli/go-util/constant"
)
const mapColumnNum = 2
type Rows struct {
	FieldSlice []string
	FieldMap   map[string]int
	Values     [][]driver.Value
}
func NewRows(fieldSlice []string, fieldMap map[string]int, values [][]driver.Value) *Rows {
	return &Rows{
		fieldSlice,
		fieldMap,
		values,
	}
}