package dbBase import ( "database/sql" "fmt" "log" "strconv" "xg_once_query/setting" "github.com/jedib0t/go-pretty/v6/table" ) func TablePrint(rows *sql.Rows, colHeads []string, pvals []interface{}) { //log.Println("TablePrint") // 表列名 t := table.NewWriter() var header table.Row for _, v := range colHeads { header = append(header, v) } t.AppendHeader(header) for rows.Next() { err := rows.Scan(pvals...) if err != nil { //log.Fatal(err) log.Println(err) break } var row table.Row for v := range pvals { row = append(row, string(*(pvals[v].(*[]byte)))) // log.Println("len row : ", len(row)) // log.Println("row", row) } t.AppendRow(row) } //输出命令行表格 fmt.Println(t.Render()) } func TablePrints(rows *sql.Rows, colHeads []string, pvals []interface{}) { //输出表列名参数 //n group组 = colHeads / cplLimit 49 ... / 5 = 9 余4 cols[n group组:cplLimit] colLimit, _ := strconv.Atoi(setting.SInfo.ColLimit) if len(colHeads) < colLimit { colLimit = len(colHeads) } group := len(colHeads) / colLimit remainder := len(colHeads) % colLimit colLimitTmp := colLimit colStart := 0 //输出表数据 var pv2 [][]string for rows.Next() { err := rows.Scan(pvals...) if err != nil { //log.Fatal(err) log.Println(err) } copiedSlice := make([]string, len(pvals)) for i, val := range pvals { // 使用 interface{} 类型进行深拷贝,并将结果存储到 copiedSlice 中 copiedSlice[i] = string(*val.(*[]byte)) } pv2 = append(pv2, copiedSlice) } for i := 0; i < group+1; i++ { colSTmp := colStart colLTmp := colLimitTmp //表列名 t := table.NewWriter() var header table.Row colTmp := colHeads[colStart:colLimitTmp] for _, v := range colTmp { header = append(header, v) } t.AppendHeader(header) //表数据 for v := range pv2 { var row table.Row abc := pv2[v][colSTmp:colLTmp] for v2 := range abc { row = append(row, abc[v2]) } t.AppendRow(row) } colStart = colLimitTmp if colLimitTmp < len(colHeads)-remainder { colLimitTmp += colLimit } else { colLimitTmp = len(colHeads) } //输出命令行表格 fmt.Println(t.Render()) } }