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二维切片初始化的实现
Apr 08 Golang
go语言-在mac下brew升级golang
Apr 25 Golang
Go语言带缓冲的通道实现
Apr 26 Golang
golang 如何通过反射创建新对象
Apr 28 Golang
goland设置颜色和字体的操作
May 05 Golang
golang elasticsearch Client的使用详解
May 05 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
golang实现一个简单的websocket聊天室功能
Oct 05 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
Go语言 详解net的tcp服务
Apr 14 Golang
golang语言指针操作
Apr 14 Golang
Python测试框架pytest核心库pluggy详解
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
深入理解PHP原理之异常机制
2010/08/21 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JS前端加密算法示例
2016/12/22 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python金融数据可视化汇总
2017/11/17 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
python 调用Google翻译接口的方法
2020/12/09 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
早餐连锁店计划书
2014/01/08 职场文书
经典公益广告词
2014/03/13 职场文书
社区志愿者培训方案
2014/06/10 职场文书
绿色出行口号
2014/06/18 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
数学备课组工作总结
2015/08/12 职场文书