Go 每日一库之 termtables

白日放歌须纵酒,青春作伴好还乡。这篇文章主要讲述Go 每日一库之 termtables相关的知识,希望能为你提供帮助。
简介 今天学个简单点的????,termtables处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习dateparse库时偶尔见遇到了这个库。
快速使用 【Go 每日一库之 termtables】本文代码使用 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 mainimport ( "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: < table class="termtable"> < thead> < tr> < th> User< /th> < th> Age< /th> < /tr> < /thead> < tbody> < tr> < td> dj< /td> < td> 18< /td> < /tr> < tr> < td> darjun< /td> < td> 30< /td> < /tr> < /tbody> < /table> 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
我 我的博客:https://darjun.github.io
欢迎关注我的微信公众号【GoUpUp】,共同学习,一起进步~

    推荐阅读