Go 每日一庫之 termtables
簡介
今天學個簡單點的😀,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:
<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😄
參考
-
Go 每日一庫 GitHub:https://github.com/darjun/go-daily-lib
-
termtables GitHub:github.com/scylladb/termtables
我
我的博客:https://darjun.github.io
歡迎關注我的微信公衆號【GoUpUp】,共同學習,一起進步~
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ijtdoBP-AZ7YVop9xrQ8lg