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项目中使用init()
Apr 12 Golang
Golang 正则匹配效率详解
Apr 25 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
解决golang在import自己的包报错的问题
Apr 29 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
Go timer如何调度
Jun 09 Golang
Go 通过结构struct实现接口interface的问题
Oct 05 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
详解Golang如何优雅的终止一个服务
Mar 21 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang解析JSON对象
Apr 30 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 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 cookie 登录验证示例代码
2009/03/16 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
JS常见问题整理(持续更新)
2013/08/06 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
简单谈谈python的反射机制
2016/06/28 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python+django加载静态网页模板解析
2017/12/12 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Python字典实现伪切片功能
2020/10/28 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
酒店采购员岗位职责
2014/03/14 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android