在golang HTML模板中切换或if / elseif / else
我有这个结构:
const ( paragraph_hypothesis = 1<<iota
paragraph_attachment = 1<<iota
paragraph_menu = 1<<iota
)
type Paragraph struct {
Type int // paragraph_hypothesis or paragraph_attachment or paragraph_menu
}
我想以Type
相关方式显示我的段落。
我发现的唯一解决方案是基于专用功能,例如在Go和nested中isAttachment
进行测试:Type``{{if}}
{{range .Paragraphs}} {{if .IsAttachment}}
-- attachement presentation code --
{{else}}{{if .IsMenu}}
-- menu --
{{else}}
-- default code --
{{end}}{{end}}
{{end}}
实际上,我有更多的类型,这使它变得更加奇怪,使带有IsSomething
功能的Go代码和具有这些功能的模板都变得混乱{{end}}
。
什么是干净的解决方案?有一些switch
或if/elseif/else
解决方案中去的模板?还是完全不同的方式来处理这些案件?
回答:
模板是无逻辑的。他们不应该具有这种逻辑。您可以拥有的最大逻辑是一堆if
。
在这种情况下,您应该这样做:
{{if .IsAttachment}} -- attachment presentation code --
{{end}}
{{if .IsMenu}}
-- menu --
{{end}}
{{if .IsDefault}}
-- default code --
{{end}}
以上是 在golang HTML模板中切换或if / elseif / else 的全部内容, 来源链接: utcz.com/qa/428012.html