首页 > 其他分享 >Go每日一库之158:termtables(表格形式数据输出)

Go每日一库之158:termtables(表格形式数据输出)

时间:2023-10-01 09:02:48浏览次数:52  
标签:github 表格 158 termtables 一库 darjun go com

简介

今天学个简单点的,[termtables](https://github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[dateparse](https://darjun.github.io/2021/06/24/godailylib/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

参考

  1. Go 每日一库 GitHub:https://github.com/darjun/go-daily-lib
  2. termtables GitHub:github.com/scylladb/termtables

标签:github,表格,158,termtables,一库,darjun,go,com
From: https://www.cnblogs.com/arena/p/17738574.html

相关文章

  • Go每日一库之157:tproxy (TCP连接代理与分析 )
    你有同感吗?当大家在开发服务端代码的时候,会不会经常有如下疑问?纳闷MySQL连接池到底有多少连接?每个连接的生命周期持续多久?连接异常断开的时候到底是服务端主动断的,还是客户端主动断的?当长时间没有请求的时候,底层库是否有KeepAlive请求?复杂网络情况的处理从来都是后端......
  • Go每日一库之155:go-spew(输出 Go 数据结构)
    对于应用的调试,我们经常会使用fmt.Println来输出关键变量的数据。或者使用log库,将数据以log的形式输出。对于基础数据类型,上面两种方法都可以比较方便地满足需求。对于一些结构体类型数据,通常我们可以先将其序列化后再输出。如果结构体中包含不可序列化的字段,比如func类型......
  • Go每日一库之154:eCapture(无需CA证书抓包https)
    eCapture介绍eCapture是一款基于eBPF技术实现的用户态数据捕获工具。不需要CA证书,即可捕获https/tls的通讯明文。项目在2022年3月中旬创建,一经发布,广受大家喜爱,至今不到两周已经1200多个Star。作用不需要CA证书,即可捕获HTTPS/TLS通信数据的明文。在bash审计场景,可以捕获ba......
  • Go每日一库之153:categraf (数据采集 Agent)
    简介Categraf是夜莺监控的默认数据采集Agent,主打开箱即用和all-in-one,同时支持对metrics、log、trace的收集,由夜莺监控核心开发团队开发。Categraf的代码托管在两个地方:中国计算学会确实开源平台:https://www.gitlink.org.cn/flashcat/categrafGithub:https://github.com/......
  • Go每日一库之152:gomacro(终端运行go代码)
    [gomacro](https://github.com/cosmos72/gomacro)是一个近乎完整的Go解释器,用纯Go实现,它同时提供交互式REPL和脚本模式,并且在运行时不需要Go工具链(除了一些非常特殊的场景:在运行时导入第三方包)。它在Go标准库之外有两个依赖项:github.com/peterh/liner和golang.org/x/......
  • Go每日一库之151:aurora(终端输出上色)
    背景介绍今天跟大家推荐一款可以给终端输出上色的工具--aurora。极速上手准备工作初始化项目gomodinitaurora演示项目结构.├──go.mod├──go.sum└──main.go安装aurora包goget-ugithub.com/logrusorgru/aurora代码演示首先引入aurora库import.......
  • Go每日一库之149:PDF处理相关库
    PDF处理场景:pdf渲染pdf校验pdf加水印pdf获取页数pdf合并pdf拆分修复受损pdfpdf转png识别pdf中的字体pdf解密...一、HTML页面渲染PDF根据html页面渲染pdf,我使用过以下两种方案:wkhtmltopdfchromedp1.使用wkhtmltopdf渲染pdfwkhtmltopdf是一个命令行工具,用......
  • Go每日一库之148:base64Captcha(多种形式验证码)
    Base64captcha几行代码就可以定义自己内容的图形验证码库,支持任意unicode字符的内容.1.文档&DemoEnglish中文文档Playground2.快速上手2.1下载base64Captcha包goget-ugithub.com/mojocn/base64Captcha2.2在您的项目中使用base64Captcha2.2.1实现Store......
  • Go每日一库之147:goldmark(Markdown转html)
    简介使用Markdown书写结构化的文档和评论已经相当流行了,Web服务需要将用户编写的Markdown文本转换为html以便浏览器渲染,还常常需要对Markdown语法进行自定义扩展以实现个性化的功能。本期要介绍的**goldmark**就是Go生态中的一款Markdown解析器和扩展器,与GitHub......
  • Go每日一库之169:dongle(编解码、加解密)
    一个轻量级、语义化、对开发者友好的golang编码解码、加密解密库。安装使用//使用github库goget-ugithub.com/golang-module/dongleimport("github.com/golang-module/dongle")//使用gitee库goget-ugitee.com/golang-module/dongleimport("g......