我使用go:generate来处理一些数据库模型的自动生成,我本来希望通过gofmt运行go模板,但是它占用了所有额外的{{ ... }}动态部分。
我漏掉了什么明显的东西吗?我希望这是gofmt人员讨论过的一个用例,因为gofmt和go generate都是go工具链的重要组成部分。
显然,只需在go fmt之后运行go generate就可以了,但是使用格式糟糕的模板( 99% go代码)却让人觉得很脏。
发布于 2015-12-07 04:12:45
大多数生成工具将模板执行到*bytes.Buffer,使用format.Source格式化缓冲区字节,并将结果写入输出文件。
给定模板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并不能确保输出将被控制。考虑到使用go/format包实现输出是多么容易,创建gofmt模板的工具没有什么价值。
https://stackoverflow.com/questions/34126083
复制相似问题