Golang HTML 模板中的切换或 if/elseif/else
问题:
显示模板中的数据基于 Go 结构体字段的类型。当前的解决方案涉及嵌套多个 {{if}} 语句或创建单独的函数来测试类型。
解决方案:
Switch 语句:
{{range .Paragraphs}} {{switch .Type}} {{case paragraph_hypothesis}}: -- hypothesis presentation code -- {{case paragraph_attachment}}: -- attachment presentation code -- {{case paragraph_menu}}: -- menu -- {{default}}: -- default code -- {{end}} {{end}}
if/elseif/else语句:
{{range .Paragraphs}} {{if .IsAttachment}} -- attachment presentation code -- {{elseif .IsMenu}} -- menu -- {{else}} -- default code -- {{end}} {{end}}
在此示例中,在检查 paragraph_attachment 后附加的 {{else if .IsMenu}} 检查 paragraph_menu 类型。
函数的使用:
如果呈现逻辑比较复杂,建议在 Go 代码中定义单独的函数。例如,您可以定义 GetHypothesisHTML() 和 GetAttachmentHTML() 等函数,然后从模板中调用它们:
{{range .Paragraphs}} {{if .IsHypothesis}} {{GetHypothesisHTML .}} {{elseif .IsAttachment}} {{GetAttachmentHTML .}} {{elseif .IsMenu}} -- menu -- {{else}} -- default code -- {{end}} {{end}}
通过利用 switch 语句、if/elseif/else 语句或专用函数,您可以根据 Go 结构体字段的类型以干净简洁的方式显示模板中的数据。
以上是如何在Go HTML模板中根据结构体字段类型显示数据?的详细内容。更多信息请关注PHP中文网其他相关文章!