我正在使用go:generate来处理自动生成一些数据库模型的过程,希望通过来运行我的go模板gofmt
,但是它会使所有额外的{{ ... }}
动态部分窒息。
我是否缺少明显的东西?我希望这是一个用例的gofmt
人已经解决,给双方gofmt
和go generate
是去工具链的突出部分。
显然,它可以在go fmt
之后运行,go generate
但是格式化不佳的模板(占99%的代码)会让人感到肮脏。
这个问题与Golang 模板范围换行符删除有关,但那里的答案没有解决。
给定
type Data struct {
Item string
IsFruit bool
}
var data = []Data{
{"banana", true},
{"apple", true},
{"onion", false},
{"peach", true}}
var Template = `
FRUITS ONLY
-----------------
{{range .}}{{if .IsFruit}}{{.Item}}{{else}}{{end}}
{{end -}}
-----------------
`
Run Code Online (Sandbox Code Playgroud)
Template
执行with的输出在和data
之间包含不需要的换行符。apple
peach
FRUITS ONLY
-----------------
banana
apple
peach
-----------------
Run Code Online (Sandbox Code Playgroud)
我尝试了{{-
和的许多变体,但-}}
没有设法抑制换行符。消除{{else}}
也行不通。
请注意,对于我的实际应用程序来说,预过滤数据不是一个选项。
完整代码示例位于 https://goplay.space/#N_GyaWwjH0Y