我正在使用go:generate来处理自动生成一些数据库模型的过程,希望通过来运行我的go模板gofmt,但是它会使所有额外的{{ ... }}动态部分窒息。
gofmt
{{ ... }}
我是否缺少明显的东西?我希望这是一个用例的gofmt人已经解决,给双方gofmt和go generate是去工具链的突出部分。
go generate
显然,它可以在go fmt之后运行,go generate但是格式化不佳的模板(占99%的代码)会让人感到肮脏。
go fmt
大多数生成工具将模板执行到* bytes.Buffer,使用format.Source格式化缓冲区字节,然后将结果写入输出文件。
给定模板t和输出writer w,代码如下所示:
t
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)
Gofmting模板不能确保将输出Gofmted。鉴于使用go / format包对输出进行gofmt操作非常容易,因此创建用于gofmt模板的工具几乎没有价值。