首页 > 其他分享 >Go每日一库之70:termtables

Go每日一库之70:termtables

时间:2023-09-28 14:35:24浏览次数:38  
标签:fmt termtables 一库 go Go quiz com

简介

今天学个简单点的,termtables处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习dateparse库时偶尔见遇到了这个库。

快速使用

本文代码使用 Go Modules。

创建目录并初始化:

$ mkdir termtables && cd termtables
$ go mod init github.com/go-quiz/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("go-quiz", 30)
  fmt.Println(t.Render())
}

运行:

$ go run main.go
+--------+-----+
| User   | Age |
+--------+-----+
| dj     | 18  |
| go-quiz | 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("go-quiz", 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>go-quiz</td><td>30</td></tr>
</tbody>
</table>

Markdown:
| User   | Age |
| ------ | --- |
| dj     | 18  |
| go-quiz | 30  |

输出的格式可以直接用在 Markdown/HTML 文件中。

总结

今天轻松一下,了解了一个小巧的工具库termtables。虽然自己实现一个类似的也不复杂,termtables库额外帮我们处理了编码、字宽等比较繁琐的细节。有需要在写示例程序中打印类似表格之类的数据不妨试一试termtables

大家如果发现好玩、好用的 Go 语言库,欢迎到 Go 每日一库 GitHub 上提交 issue

参考

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

标签:fmt,termtables,一库,go,Go,quiz,com
From: https://www.cnblogs.com/arena/p/17735735.html

相关文章

  • Go每日一库之69:resty
    简介resty是Go语言的一个HTTPclient库。resty功能强大,特性丰富。它支持几乎所有的HTTP方法(GET/POST/PUT/DELETE/OPTION/HEAD/PATCH等),并提供了简单易用的API。快速使用本文代码使用GoModules。创建目录并初始化:$mkdirresty&&cdresty$gomodinitgithub.com/......
  • golang-channel
    什么是channel管道channel是goroutine与goroutine之间通信的重要桥梁channel是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过channel的发送方和接受方是 goroutine 对象,属于内存级别的通信。这里涉及到了goroutine概念,goroutine是轻量级的......
  • gom引擎微端架设教程
    在配置GOM微端之前呢,首先我们需要在服务器里面准备好1.传奇版本2.版本配套的补丁3.完整传奇客户端(推荐使用15到17周年的)4.微端程序。这些准备好,下面我们就可以直接架设了。首先呢需要把版本解压到D盘,然后把补丁解压到客户端里面,接着我们打开引擎包,引擎包里面有微端程序给程序放到桌......
  • GO基础环境搭建GoLand
    一、GO官方资料官网:https://golang.org/gosdk下载:https://golang.google.cn/dl/golang中文社区:https://studygolang.com/dl中文社区文档https://studygolang.com/pkgdoc二、开发环境配置1、GOSDK下载后,自行安装go语言开发需要使用gosdk,下载链接https://go.dev/dl/下载......
  • go go代码中调用python脚本
    目录gogo代码中调用python脚本写个简单的py脚本再写个go的脚本gogo代码中调用python脚本有的官方文档只提供了java和python的sdk,而我们需要用他们封装的服务,只能调用python或java的接口,接下来演示怎么调用python写个简单的py脚本importsysdefmain():args1=sys.ar......
  • Go每日一库之28:validator
    简介今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在Web开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。快速使用先安装:$gogetgopkg.in/go-playground/vali......
  • 在windows10上安装多个golang
    在windows10上安装多个golang原理下载不同go版本,然后重命名go可执行文件,然后配置环境变量,不同命令使用不同的版本。其实所有的开发环境都可以这么使用。比如python2,python3方法问的文心一言,哈哈哈哈哈哈总体方法如下,具体可以参考例子,例子更清楚。创建一个新的文件夹,用于......
  • Gorm接口
    packagemainimport("encoding/json""gorm.io/driver/mysql""gorm.io/gorm""net/http""strconv")//新闻结构体typeNewsstruct{Idint`json:"id"`Titlestring`json:"titl......
  • 在Go中如何实现并发
    Go语言的并发机制是其强大和流行的一个关键特性之一。Go使用协程(goroutines)和通道(channels)来实现并发编程,这使得编写高效且可维护的并发代码变得相对容易。下面是Go的并发机制的详细介绍:协程(Goroutines):协程是Go中的轻量级线程,由Go运行时管理。与传统线程相比,协程的创建和销毁......
  • Modbus动态链接库供多语言使用 | Go
    Modbus协议控制动态链接库应用场景基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题,而且对modbus协议存在比较多的细节处理,可以查看modbusslave、或者modbuspoll中相关的配置可知,数据类型对应读写寄存器个数、大小端的处理等等细节,所以......