一 背景
在使用cli打印结果的时候,对结果进行格式化输出,但限于内容较长的,不好自动排版,需要明确宽度等其他字段,可以使用gotable可以根据字段的长度自动调整每列的宽度,并且自动将字段居中显示。表格可以动态的新增列和数据。
二 库简介
gotable可以打印table到控制台,目前支持ASCII/Chinese characters 。
可以非常轻松实现根据内容自调整局中显示,非常方便。
三 代码
3.1 创建表格
1
|
func Create(columns ...string) (*table.Table, error) |
3.2 增加row
增加单行
1
|
func (tb *Table) AddRow(row map[string]string) error |
增加多行
1
|
func (tb *Table) AddRows(rows []map[string]string) []map[string]string |
3.3 增加column
1
|
func (tb *Table) AddColumn(column string) error |
3.4 打印表格
1
|
func (tb *Table) PrintTable() |
3.5 边框操作
关闭边框
1
|
func (tb *Table) CloseBorder() |
开启边框
1
|
func (tb *Table) OpenBorder() |
3.6 输出json
1
|
func (tb *Table) Json(indent int) (string, error) |
四 测试
4.1 创建表格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package main import ( "fmt" "github.com/liushuochen/gotable" ) func main() { table, err := gotable.Create("country", "city") if err != nil { fmt.Println(err.Error()) return } values := []map[string]string{{"country": "China", "city": "Beijing"}, {"country": "Japan", "city": "Tokyo"}, {"country": "North Korea", "city": "Pyongyang"}} for _, value := range values { err := table.AddRow(value) if err != nil { fmt.Println(err.Error()) return } } r, _ := table.Json(4) fmt.Println(r) table.CloseBorder() table.PrintTable() } |
4.2 输出json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package main import ( "fmt" "github.com/liushuochen/gotable" ) func main() { tb, err := gotable.Create("Name", "ID", "salary") if err != nil { fmt.Println("Create table failed: ", err.Error()) return } rows := make([]map[string]string, 0) for i := 0; i < 3; i++ { row := make(map[string]string) row["Name"] = fmt.Sprintf("employee-%d", i) row["ID"] = fmt.Sprintf("00%d", i) row["salary"] = "60000" rows = append(rows, row) } jsonString, err := tb.Json(4) if err != nil { fmt.Println("ERROR: ", err.Error()) return } fmt.Println(jsonString) // output: [] tb.AddRows(rows) jsonString, err = tb.Json(4) if err != nil { fmt.Println("ERROR: ", err.Error()) return } fmt.Println(jsonString) // output: // [ // { // "ID": "000", // "Name": "employee-0", // "salary": "60000" // }, // { // "ID": "001", // "Name": "employee-1", // "salary": "60000" // // // "ID": "002", // "Name": "employee-2", // "salary": "60000" // } //] } |
五 其他
利用golang 的 tabwriter也可以去实现打印表格,不过定义比较麻烦,更多高级功能可以自己定义,gotable拿来即用,可以配合表格输出和json输出到控制台的场景。
参考链接
https://github.com/liushuochen/gotable
到此这篇关于golang 实用库gotable的具体使用的文章就介绍到这了,更多相关golang gotable内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://juejin.cn/post/6978323982059733028