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


猜你喜欢
- 带农历的JavaScript日期时间,增加了农历使这款代码更具实用性,很不错,不但有农历,而且还可以显示民国计年,可以判断显示闰月、闰年等,
- 一、MySQL中如何表示当前时间?其实,表达方式还是蛮多的,汇总如下:CURRENT_TIMESTAMPCURRENT_TIMESTAMP(
- 前言例如,当使用pandas读取csv文件时,如果元素为空,则将其视为缺失值NaN(非数字)。使用dropna()方法删除缺失值,使用fil
- 本文实例讲述了python类和继承定义与用法。分享给大家供大家参考。具体如下:class Employee: passlee =
- 设计与开发之间本有一线界限,但当时代步入又一个十年,这个线变得更加模糊甚至感觉不到它的存在。使用PS设计网页版面,足矣?或许五年前是吧!现在
- 天下武功,唯快不破。编程也不例外,你的代码跑的快,你能快速找出代码慢的原因,你的码功就高。安装pip install pyinstrumen
- 在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX,
- 一 domain层介绍说明domain层专注于数据库数据领域开发,我们把数据库相关操作全部写在domain层。model层:数据表字段定义与
- 本文实例为大家分享了PyQt5实现简单数据标注工具的具体代码,分类用,供大家参考,具体内容如下第一个最大的图片是当前要标注的类别,接下来的两
- element-ui官网中关于行合并的例子是根据行号进行合并的,这显然不符合我们日常开发需求,因为通常我们table中的数据都是动态生成的,
- 在使用python爬取网站信息时,查看爬取完后的数据发现,数据并没有被爬取下来,这是因为网站中有UA这种请求载体的身份标识,如果不是基于某一
- 一、地理编码与逆编码地理编码与逆编码表示的是地名地址与地理坐标(经纬度)互相转换的过程。其中,将地址信息映射为地理坐标的过程称之为地理编码;
- 除非您正在对服务进行原型设计,否则您可能会关心应用程序的内存使用情况。占用更小的内存,会使基础设施成本降低,扩展变得更容易。尽管 Go 以不
- 一、python开发环境安装与配置1.python的下载从https://www.python.org/downloads/进行下载。2.安
- Unittestunittest大家应该都不陌生。它作为一款博主在5-6年前最常用的单元测试框架,现在正被pytest,nose慢慢蚕食。渐
- 前言在测试过程中,注意力往往都在功能上,如果功能正常,是基本不会查看日志的,反之会查看日志定位问题。但是表面上的功能正常不能确保日志没有报错
- String str = "n1e你v00a?Az$Z000?#99?9900眯2_悄s3你y4@好?!6求救你d75a8t&qu
- 本文实例讲述了PHP实现通过正则表达式替换回调的内容标签。分享给大家供大家参考。具体实现方法如下:function my_wp_plugin
- 1、前言通常,我们在开发过程中,难免需要去部署我们的服务,但是,我们应该如何去做呢?如果主机重启了,服务怎么自己启动呢?可能你的心里已经有了
- 在pytorch训练过程中可以通过下面这一句代码来打印当前学习率print(net.optimizer.state_dict()['