在 Go 语言开发中,很多时候我们需要在命令行输出整齐、美观的表格数据,比如展示配置项、监控指标、执行结果等。这里要给大家介绍一个超实用的小工具------tablewriter
。
什么是 tablewriter?
tablewriter
是一个专门用于在终端中绘制文本表格的 Go 语言库。它可以帮助开发者以极简的方式输出格式化、对齐、美观的表格,不用自己辛苦拼接空格或边框,大大提升了 CLI 程序的观感和专业感。
只需要简单配置,就能快速输出支持自动对齐、自动换行、表头设置、边框美化等功能的表格。
如何在项目中使用 tablewriter?
- 安装依赖
首先,你需要在项目中引入 tablewriter
:
shell
go get github.com/olekukonko/tablewriter
- 基本用法
来看看一个最简单的示例:
go
package main
import (
"os"
"github.com/olekukonko/tablewriter"
)
func main() {
data := [][]string{
[]string{"Alfred", "24", "Engineer"},
[]string{"Nancy", "29", "Designer"},
[]string{"John", "31", "Manager"},
}
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Name", "Age", "Occupation"})
for _, v := range data {
table.Append(v)
}
table.Render() // 渲染表格输出
}
运行结果就像这样,非常整齐,另外如果需要在终端的左上角每次刷新覆盖之前的表格,可以在输出表格前通过 fmt.Print("\033[2J\033[H")
来清屏并将光标移到左上角:
shell
+--------+-----+------------+
| NAME | AGE | OCCUPATION |
+--------+-----+------------+
| Alfred | 24 | Engineer |
| Nancy | 29 | Designer |
| John | 31 | Manager |
+--------+-----+------------+
- 常用配置技巧
- 设置表格风格
你可以自由配置是否显示边框、分隔线等:
go
table.SetBorder(false) // 不显示边框
table.SetRowLine(true) // 每行之间显示线
table.SetAutoWrapText(false) // 禁止自动换行
- 对齐设置
可以单独设置列对齐方式,默认情况下数字类型右对齐、字符串或其他类型左对齐,可以通过 SetHeaderAlignment
、SetAlignment
、SetFooterAlignment
方法指定表头、正文、表尾的对齐方式:
go
table.SetAlignment(tablewriter.ALIGN_LEFT) // 表格内容居左对齐
- 自定义表头颜色
可以使用 SetHeaderColor
设置彩色表头,让输出更醒目,另外通过SetColumnColor
、SetFooterColor
能够分别对表内容、表尾指定颜色
go
table.SetHeaderColor(
tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiRedColor},
tablewriter.Colors{tablewriter.FgGreenColor},
tablewriter.Colors{tablewriter.FgCyanColor},
)

- 输出表格格式的文件
对于较小的文件可以在 os.Create
后直接对其进行写入操作:
go
file, _ := os.Create("log.txt")
defer file.Close()
table := tablewriter.NewWriter(file)
如果文件比较大,可以将其拆分为一个个小块,再在缓冲区中进行写入操作:
go
writer := bufio.NewWriter(file)
defer writer.Flush()
table := tablewriter.NewWriter(writer)
- 更多高级功能
- 支持设置列宽、合并单元格
- 可以添加 Footer(底部汇总行)
- 支持 CSV 数据直接读取
总之,tablewriter
小而精悍,非常适合用在各种 CLI 工具、日志输出优化等场景,几乎是 Go 程序员必备的小工具之一!