golang 实用库gotable的具体使用


Posted in Golang onJuly 01, 2021
目录
  • 一 背景
  • 二 库简介
  • 三 代码
    • 3.1 创建表格
    • 3.2 增加row
    • 3.3 增加column
    • 3.4 打印表格
    • 3.5 边框操作
    • 3.6 输出json
  • 四 测试
    • 4.1 创建表格
    • 4.2 输出json
  • 五 其他
  • 参考链接

一 背景

在使用cli打印结果的时候,对结果进行格式化输出,但限于内容较长的,不好自动排版,需要明确宽度等其他字段,可以使用gotable可以根据字段的长度自动调整每列的宽度,并且自动将字段居中显示。表格可以动态的新增列和数据。

二 库简介

gotable可以打印table到控制台,目前支持ASCII/Chinese characters 。
可以非常轻松实现根据内容自调整局中显示,非常方便。

三 代码

3.1 创建表格

func Create(columns ...string) (*table.Table, error)

3.2 增加row

增加单行

func (tb *Table) AddRow(row map[string]string) error

增加多行

func (tb *Table) AddRows(rows []map[string]string) []map[string]string

3.3 增加column

func (tb *Table) AddColumn(column string) error

3.4 打印表格

func (tb *Table) PrintTable()

3.5 边框操作

关闭边框

func (tb *Table) CloseBorder()

开启边框

func (tb *Table) OpenBorder()

3.6 输出json

func (tb *Table) Json(indent int) (string, error)

四 测试

4.1 创建表格

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

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内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
go结构体嵌套的切片数组操作
Apr 28 Golang
golang日志包logger的用法详解
May 05 Golang
golang 实现时间戳和时间的转化
May 07 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Go 语言结构实例分析
Jul 04 Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
Golang ort 中的sortInts 方法
Apr 24 Golang
Golang 入门 之url 包
May 04 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 Golang
Go结合Gin导出Mysql数据到Excel表格
Aug 05 Golang
试了下Golang实现try catch的方法
Jul 01 #Golang
Golang 语言控制并发 Goroutine的方法
Jun 30 #Golang
Golang的继承模拟实例
Jun 30 #Golang
go select编译期的优化处理逻辑使用场景分析
Go 语言下基于Redis分布式锁的实现方式
Jun 28 #Golang
go语言使用Casbin实现角色的权限控制
Go语言设计模式之结构型模式
You might like
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
隐藏你的.php文件的实现方法
2007/03/19 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
C语言编程练习
2012/04/02 面试题
Java语言的优势
2015/01/10 面试题
销售文员岗位职责
2013/11/29 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
音乐教师求职信
2014/06/28 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
具结保证书范本
2015/05/11 职场文书