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 02 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
Golang 空map和未初始化map的注意事项说明
Apr 29 Golang
Golang 如何实现函数的任意类型传参
Apr 29 Golang
Go标准容器之Ring的使用说明
May 05 Golang
golang 实现并发求和
May 08 Golang
Golang中异常处理机制详解
Jun 08 Golang
Go timer如何调度
Jun 09 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
Go语言grpc和protobuf
Apr 13 Golang
Golang 切片(Slice)实现增删改查
Apr 22 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
用PHP函数解决SQL injection
2006/10/09 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
yii添删改查实例
2015/11/16 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
Python 12306抢火车票脚本
2018/02/07 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python树的同构学习笔记
2019/09/14 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
投资意向书
2014/07/30 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
优秀员工自荐书
2015/03/06 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
python中对列表的删除和添加方法详解
2022/02/24 Python
Python实现抖音热搜定时爬取功能
2022/03/16 Python
Django框架中视图的用法
2022/06/10 Python