关于 console-rendering
介绍基于 Go 结构体标签的控制台渲染系统,供开发者配置结构体、切片和映射的显示方式,包括字段标签与值格式。
主要功能
- 01配置字段标签和区块标题
- 02格式化数字与费用值
- 03省略零值或指定字段
- 04将结构体切片渲染为表格
- 05自动格式化时间值
适用场景
- 01将 Go 结构体显示为对齐的键值对
- 02以表格展示记录切片
- 03格式化控制台输出中的指标和费用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ github/ gh-aw --skill console-rendering安装后在 Claude Code 中输入/console-rendering确认已加载。
详细介绍
控制台渲染系统用法
本指南介绍基于结构体标签的控制台渲染系统。
结构体标签支持
使用 console 结构体标签控制渲染行为:
header:"Name"- 设置字段的显示名称(用于结构体和表格)title:"Section Title"- 设置嵌套结构体、切片或映射的标题format:"type"- 设置字段值的格式类型format:number- 将整数格式化为易读的数字(例如,“1k”、“1.2M”)format:cost- 将浮点数格式化为带 $ 前缀的货币(例如,“$1.234”)
omitempty- 字段为零值时跳过该字段"-"- 始终跳过该字段
用法示例
type Overview struct {
RunID int64 `console:"header:Run ID"`
Workflow string `console:"header:Workflow"`
Status string `console:"header:Status"`
Duration string `console:"header:Duration,omitempty"`
}
data := Overview{
RunID: 12345,
Workflow: "test-workflow",
Status: "completed",
Duration: "5m30s",
}
// Simple rendering
fmt.Print(console.RenderStruct(data))
// Output:
// Run ID : 12345
// Workflow: test-workflow
// Status : completed
// Duration: 5m30s
格式标签示例
数字格式
type Metrics struct {
TokenUsage int `console:"header:Token Usage,format:number"`
Errors int `console:"header:Errors"`
}
data := Metrics{
TokenUsage: 250000,
Errors: 5,
}
// Renders as:
// Token Usage: 250k
// Errors : 5
费用格式
type Billing struct {
Cost float64 `console:"header:Estimated Cost,format:cost"`
}
data := Billing{
Cost: 1.234,
}
// Renders as:
// Estimated Cost: $1.234
渲染行为
结构体
结构体会渲染为对齐良好的键值对。
切片
结构体切片会自动渲染为表格:
type Job struct {
Name string `console:"header:Name"`
Status string `console:"header:Status"`
Conclusion string `console:"header:Conclusion,omitempty"`
}
jobs := []Job{
{Name: "build", Status: "completed", Conclusion: "success"},
{Name: "test", Status: "in_progress", Conclusion: ""},
}
fmt.Print(console.RenderStruct(jobs))
渲染结果:
Name | Status | Conclusion
----- | ----------- | ----------
build | completed | success
test | in_progress | -
映射
映射会渲染为 Markdown 风格的标题,并附带键值对。
特殊类型处理
time.Time
time.Time 字段会自动格式化为 "2006-01-02 15:04:05"。使用 omitempty 时,零值时间会被视为空值。
未导出字段
渲染系统会在尝试访问字段值前检查 CanInterface(),从而安全地处理未导出的结构体字段。
评论
支持 Markdown