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语言map与string的相互转换的实现
Apr 07 Golang
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
Golang 编译成DLL文件的操作
May 06 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
Golang的继承模拟实例
Jun 30 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
golang定时器
Apr 14 Golang
Golang解析JSON对象
Apr 30 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 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 更新数据库中断的解决方法
2009/06/05 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python读写文件基础知识点
2019/06/10 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
浅析python函数式编程
2020/09/26 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
2016年“5.12”护士节致辞
2015/07/31 职场文书