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语言使用select{}阻塞main函数介绍
Apr 25 Golang
golang如何去除多余空白字符(含制表符)
Apr 25 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
go语言中fallthrough的用法说明
May 06 Golang
goland 设置project gopath的操作
May 06 Golang
Go 自定义package包设置与导入操作
May 06 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
Golang并发操作中常见的读写锁详析
Aug 30 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
PHP和XSS跨站攻击的防范
2007/04/17 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
Angular路由简单学习
2016/12/26 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
收集的几个Python小技巧分享
2014/11/22 Python
Python查找相似单词的方法
2015/03/05 Python
Python中正则表达式详解
2017/05/17 Python
python实现图书管理系统
2018/03/12 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python递归实现打印多重列表代码
2020/02/27 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
详解Flask前后端分离项目案例
2020/07/24 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
python MD5加密的示例
2020/10/19 Python
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
大学校运会广播稿
2014/02/03 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
社区服务活动报告
2015/02/05 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Python 视频画质增强
2022/04/28 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript