Go 每日一庫之 termtables
簡介
今天學個簡單點的??,termtables處理表格形式數(shù)據(jù)的輸出。適用于隨時隨地的輸出一些狀態(tài)或統(tǒng)計數(shù)據(jù),便于觀察和調(diào)試。是一個很小巧的工具庫。我在學習dateparse庫時偶爾見遇到了這個庫。
快速使用
本文代碼使用 Go Modules。
創(chuàng)建目錄并初始化:
$ 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,然后原始倉庫已經(jīng)被刪除了。目前使用的都是其他人 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??|
+--------+-----+
使用很方便,首先調(diào)用termtables.CreateTable()創(chuàng)建一個表格對象,調(diào)用該對象的AddHeader()方法添加頭部信息,然后調(diào)用AddRow()逐行添加數(shù)據(jù)。最后調(diào)用Render()返回渲染后的表格字符串。
模式
處理普通的文本表格,termtables還支持輸出 HTML 和 Markdown 格式的表格。只需要調(diào)用表格對象的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">
User Age
dj 18
darjun 30
Markdown:
|?User???|?Age?|
|?------?|?---?|
|?dj?????|?18??|
|?darjun?|?30??|
輸出的格式可以直接用在 Markdown/HTML 文件中。
總結(jié)
今天輕松一下,了解了一個小巧的工具庫termtables。雖然自己實現(xiàn)一個類似的也不復雜,termtables庫額外幫我們處理了編碼、字寬等比較繁瑣的細節(jié)。有需要在寫示例程序中打印類似表格之類的數(shù)據(jù)不妨試一試termtables。
大家如果發(fā)現(xiàn)好玩、好用的 Go 語言庫,歡迎到 Go 每日一庫 GitHub 上提交 issue??
參考
Go 每日一庫 GitHub:https://github.com/darjun/go-daily-lib termtables GitHub:github.com/scylladb/termtables
推薦閱讀
