gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:24:41 25 4
gpt4 key购买 nike

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

我是否遗漏了一些明显的东西?我希望这是 gofmt 人员解决的用例,因为 gofmtgo generate 都是 go 工具链的重要部分。

显然,在 go generate 之后运行 go fmt 是可行的,但是让 99% 都是 go 代码的格式不佳的模板感觉很脏。

最佳答案

大多数生成工具将模板执行到 *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)

修改模板并不能保证输出会被修改。鉴于使用 go/format 包 gofmt 输出是多么容易,创建一个 gofmt 模板工具没有什么值(value)。

关于go - 是否可以在设计用于 go generate 的模板上使用 gofmt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34126083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com