我正在使用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)
Gofmting模板不能确保将输出Gofmted。鉴于使用go / format包对输出进行gofmt操作非常容易,因此创建用于gofmt模板的工具几乎没有价值。