Go 每日一庫之 termtables

簡介

今天學個簡單點的😀,dateparse庫時偶爾見遇到了這個庫。git

快速使用

本文代碼使用 Go Modules。github

建立目錄並初始化:golang

$ 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()返回渲染後的表格字符串。code

模式

處理普通的文本表格,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】,共同窗習,一塊兒進步~

相關文章
相關標籤/搜索