mcpField
C
console-rendering

console-rendering

github.com/github开发5.5k54 次安装今天更新
代码仓库

关于 console-rendering

介绍基于 Go 结构体标签的控制台渲染系统,供开发者配置结构体、切片和映射的显示方式,包括字段标签与值格式。

主要功能

  1. 01配置字段标签和区块标题
  2. 02格式化数字与费用值
  3. 03省略零值或指定字段
  4. 04将结构体切片渲染为表格
  5. 05自动格式化时间值

适用场景

  1. 01将 Go 结构体显示为对齐的键值对
  2. 02以表格展示记录切片
  3. 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