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 Gin实现文件上传下载的示例代码
Apr 02 Golang
golang如何去除多余空白字符(含制表符)
Apr 25 Golang
goland 清除所有的默认设置操作
Apr 28 Golang
基于Go Int转string几种方式性能测试
Apr 28 Golang
Go 自定义package包设置与导入操作
May 06 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang入门之计时器
May 04 Golang
Go语言编译原理之变量捕获
Aug 05 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连接函数implode与分割explode的深入解析
2013/06/26 PHP
PHP队列用法实例
2014/11/05 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
require.js中的define函数详解
2017/07/10 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python绘制简单彩虹图
2018/11/19 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
大学生演讲稿范文
2014/01/11 职场文书
校友会欢迎辞
2014/01/13 职场文书
2014和解协议书范文
2014/09/15 职场文书
三方股份合作协议书
2014/10/13 职场文书
大学教师个人总结
2015/02/10 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
python区块链持久化和命令行接口实现简版
2022/05/25 Python