Go 每日一库之 termtables

共 1803字,需浏览 4分钟

 ·

2021-10-13 03:38

简介

今天学个简单点的😀,termtables处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习dateparse库时偶尔见遇到了这个库。

快速使用

本文代码使用 Go Modules。

创建目录并初始化:

$ mkdir termtables && cd termtables
$ go mod init github.com/darjun/go-daily-lib/termtables

安装termtables库:

$ go get -u github.com/scylladb/termtables

最原始的termtables库为github.com/apcera/termtables,然后原始仓库已经被删除了。目前使用的都是其他人 fork 的仓库。

使用:

package main

import (
  "fmt"
  "github.com/scylladb/termtables"
)

func main() {
  t := termtables.CreateTable()
  t.AddHeaders("User""Age")
  t.AddRow("dj"18)
  t.AddRow("darjun"30)
  fmt.Println(t.Render())
}

运行:

go run main.go
+--------+-----+
| User   | Age |
+--------+-----+
| dj     | 18  |
| darjun | 30  |
+--------+-----+

使用很方便,首先调用termtables.CreateTable()创建一个表格对象,调用该对象的AddHeader()方法添加头部信息,然后调用AddRow()逐行添加数据。最后调用Render()返回渲染后的表格字符串。

模式

处理普通的文本表格,termtables还支持输出 HTML 和 Markdown 格式的表格。只需要调用表格对象的SetModeHTML()/SetModeMarkdown()方法设置一些模式即可 。

func main() {
  t := termtables.CreateTable()
  t.AddHeaders("User""Age")
  t.AddRow("dj"18)
  t.AddRow("darjun"30)
  fmt.Println("HTML:")
  t.SetModeHTML()
  fmt.Println(t.Render())

  fmt.Println("Markdown:")
  t.SetModeMarkdown()
  fmt.Println(t.Render())
}

运行:

go run main.go
HTML:
"termtable">

UserAge


dj18
darjun30



Markdown:
| User   | Age |
| ------ | --- |
| dj     | 18  |
| darjun | 30  |

输出的格式可以直接用在 Markdown/HTML 文件中。

总结

今天轻松一下,了解了一个小巧的工具库termtables。虽然自己实现一个类似的也不复杂,termtables库额外帮我们处理了编码、字宽等比较繁琐的细节。有需要在写示例程序中打印类似表格之类的数据不妨试一试termtables

大家如果发现好玩、好用的 Go 语言库,欢迎到 Go 每日一库 GitHub 上提交 issue😄

参考

  1. Go 每日一库 GitHub:https://github.com/darjun/go-daily-lib
  2. termtables GitHub:github.com/scylladb/termtables


推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报