首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在设计用于go generate的模板上使用gofmt?

是否可以在设计用于go generate的模板上使用gofmt?
EN

Stack Overflow用户
提问于 2015-12-07 03:43:50
回答 1查看 2.9K关注 0票数 7

我使用go:generate来处理一些数据库模型的自动生成,我本来希望通过gofmt运行go模板,但是它占用了所有额外的{{ ... }}动态部分。

我漏掉了什么明显的东西吗?我希望这是gofmt人员讨论过的一个用例,因为gofmtgo generate都是go工具链的重要组成部分。

显然,只需在go fmt之后运行go generate就可以了,但是使用格式糟糕的模板( 99% go代码)却让人觉得很脏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 04:12:45

大多数生成工具将模板执行到*bytes.Buffer,使用format.Source格式化缓冲区字节,并将结果写入输出文件。

给定模板t和输出编写器w,代码如下所示:

代码语言:javascript
复制
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模板的工具没有什么价值。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34126083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档