Go 每日一库之termtables的使用

作者:darjun 时间:2024-05-22 10:20:25 

目录
  • 快速使用

  • 模式

  • 总结

今天学个简单点的😀,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

来源:https://juejin.cn/post/6980119402356146213

标签:Go,termtables
0
投稿

猜你喜欢

  • 快速升级MySQL系统表

    2009-01-23 12:35:00
  • Python 中如何使用 virtualenv 管理虚拟环境

    2022-02-20 00:57:44
  • win2003安装sqlserver 2000提示无法验证产品密钥的解决方法

    2024-01-27 00:18:39
  • Django模型层实现多表关系创建和多表操作

    2022-12-01 09:13:46
  • python如何使用replace做多字符替换

    2022-10-23 01:26:59
  • MySQL数据库升级的一些"陷阱"

    2024-01-15 17:35:22
  • Python对list列表结构中的值进行去重的方法总结

    2021-10-18 04:09:04
  • SQL Server 2005的cmd_shell组件的开启方法

    2024-01-19 15:18:06
  • 搜索结果页(SERP):前言

    2009-07-22 20:56:00
  • 使用python实现微信小程序自动签到功能

    2021-05-30 10:04:11
  • Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例

    2023-07-09 00:11:24
  • python修改全局变量可以不加global吗?

    2021-01-11 08:10:56
  • 一份ASP内存的释放的实验报告

    2007-10-17 13:09:00
  • 用javascript做拖动层布局的思路

    2008-05-30 13:38:00
  • 判断数据库里存在的BIG5码

    2009-04-09 18:31:00
  • Mac上安装Mysql的详细步骤及配置

    2024-01-29 12:20:46
  • Python 含参构造函数实例详解

    2023-02-06 13:16:48
  • 7个流行的Python强化学习算法及代码实现详解

    2021-07-06 08:38:03
  • asp自动生成javascript检验函数

    2009-01-21 19:40:00
  • 基于JS脚本语言的基础语法详解

    2024-06-05 10:01:53
  • asp之家 网络编程 m.aspxhome.com