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 相关文章推荐
Golang: 内建容器的用法
May 05 Golang
Golang 编译成DLL文件的操作
May 06 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
golang中的并发和并行
May 08 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
go开发alertmanger实现钉钉报警
Jul 16 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
Golang 对es的操作实例
Apr 20 Golang
Go web入门Go pongo2模板引擎
May 20 Golang
详解Go语言中Get/Post请求测试
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的日期与时间函数技巧
2008/04/24 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
React组件生命周期详解
2017/07/03 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
HTML5等待加载动画效果
2017/07/27 HTML / CSS
2014优秀党员事迹材料
2014/08/14 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
小学生节水倡议书
2015/04/29 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
python读取mat文件生成h5文件的实现
2022/07/15 Python