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 相关文章推荐
goland 清除所有的默认设置操作
Apr 28 Golang
Go 实现英尺和米的简单单位换算方式
Apr 29 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
对Golang中的FORM相关字段理解
May 02 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
Golang表示枚举类型的详细讲解
Sep 04 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
golang连接MySQl使用sqlx库
Apr 14 Golang
Golang 对es的操作实例
Apr 20 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang日志包的使用
Apr 20 Golang
Go语言编译原理之变量捕获
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
星际争霸秘籍
2020/03/04 星际争霸
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
收藏的一个php小偷的核心程序
2007/04/09 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
JS location几个方法小姐
2008/07/09 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Python切片用法实例教程
2014/09/08 Python
Python如何为图片添加水印
2016/11/25 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python中正则表达式与模式匹配
2019/05/07 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
Python列表list操作相关知识小结
2020/01/29 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
Redis三种集群模式详解
2021/10/05 Redis