我正在使用go:generate来处理自动生成一些数据库模型的过程,希望通过来运行我的go模板gofmt,但是它会使所有额外的{{ ... }}动态部分窒息。
我是否缺少明显的东西?我希望这是一个用例的gofmt人已经解决,给双方gofmt和go generate是去工具链的突出部分。
显然,它可以在go fmt之后运行,go generate但是格式化不佳的模板(占99%的代码)会让人感到肮脏。
大多数生成工具将模板执行到* bytes.Buffer,使用format.Source格式化缓冲区字节,然后将结果写入输出文件。
给定模板t和输出writer w,代码如下所示:
var buf bytes.Buffer
if err := t.Execute(&buf, data); err != nil {
// handle error
}
p, err := format.Source(buf.Bytes())
if err != nil {
// handle error
}
w.Write(p)
Run Code Online (Sandbox Code Playgroud)
Gofmting模板不能确保将输出Gofmted。鉴于使用go / format包对输出进行gofmt操作非常容易,因此创建用于gofmt模板的工具几乎没有价值。
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |