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 interface{}==nil 的几种坑及原理分析
Apr 24 Golang
go语言中切片与内存复制 memcpy 的实现操作
Apr 27 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
解决Golang中ResponseWriter的一个坑
Apr 27 Golang
使用golang编写一个并发工作队列
May 08 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang 遍历二叉树
Apr 19 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang并发工具Singleflight
May 06 Golang
Go语言测试库testify使用学习
Jul 23 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获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
vue实现搜索功能
2019/05/28 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
python实现电子词典
2020/04/23 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
python的mysqldb安装步骤详解
2017/08/14 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
如何掌握自荐信格式呢
2013/11/19 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
争做文明公民倡议书
2014/08/29 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
专业见习报告范文
2014/11/03 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
绿色环保倡议书
2015/04/28 职场文书
环保建议书范文
2015/09/14 职场文书
导游词之昭君岛
2020/01/17 职场文书