当前位置: 首页 > 面试题库 >

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

黄和怡
2023-03-14
问题内容

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

我是否缺少明显的东西?我希望这是一个用例的gofmt人已经解决,给双方gofmtgo 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模板的工具几乎没有价值。



 类似资料:
  • 问题内容: 我对棱角玉和玉都陌生。我想知道角度是否只能与HTML一起使用,还是可以在玉模板中使用相同的角度调用?我只看到有角度的模板与HTML一起使用,还没有在任何翡翠模板中找到它。有可能这样做吗?玉模板中的棱角看起来如何? 问题答案: 是的你可以。它看起来像:

  • 我试图重载一个乘法运算符,但不想输入多个重载函数来考虑整数与浮点、整数与双精度、浮点与整数的乘法等等。。。我希望编写一个重载运算符来解释所有带浮点数、整数和double的乘法组合,并得到正确的返回类型。我得到的错误是,没有找到接受“Widget::Widget”类型的右操作数的运算符(或者没有可接受的转换)。我想这是因为我正在使用decltype来设置返回对象小部件的模板类型。如果返回不是模板对象

  • 问题内容: 我的问题如标题中所述。我正在尝试做类似的事情: 我得到错误: 是否有其他方法可以在模板中进行模量计算? 问题答案: 添加具有所需逻辑的模板功能。例如: 游乐场的例子

  • 问题内容: 我为我的网站创建了一个模板文件… 我将此文件用作这样的模板: 仅此而已…但是,如果我尝试在模板文件上使用连接,那就搞砸了!我使用了一个外部文件,例如: 我将这个文件用作include_once(“ filename.php”); 在模板文件上…这时出现错误…例如此连接变量是什么,此连接字符串是什么…等等。它无法到达连接字符串… 顺便说一句,我使用另一个外部连接,如: 我要哭了!有什么问

  • 模板设计:  

  • (...)“m”不约束类型(...)