gpt4 book ai didi

google-app-engine - GAE Go 模板包中的条件语句

转载 作者:IT老高 更新时间:2023-10-28 13:08:54 24 4
gpt4 key购买 nike

如何在 GAE GO 的 html 模板中执行条件语句?我试图完成此操作以在选择 html 标记中选择一个选项:

<select name=".Grade">
<option value=""></option>
<option value="1" {{ if .Grade="1" }} selected="selected" {{ end }}>Grade One</option>
<option value="2" {{ if .Grade="2" }} selected="selected" {{ end }}>Grade Two</option>
<option value="3" {{ if .Grade="3" }} selected="selected" {{ end }}>Grade Three</option>
<option value="4" {{ if .Grade="4" }} selected="selected" {{ end }}>Grade Four</option>
<option value="5" {{ if .Grade="5" }} selected="selected" {{ end }}>Grade Five</option>
<option value="6" {{ if .Grade="6" }} selected="selected" {{ end }}>Grade Six</option>
</select>

{{ if .Grade }} selected="selected" {{ end }} 

在引用文档中,但仅当 .Grade 具有值时才评估为 true。任何帮助将不胜感激。谢谢!

最佳答案

基础模板包中没有等式声明。
这是 interesting discussion from golang-nuts关于它。

你有几种可能:

  • 为相等定义一个外部函数,就像 Russ Cox 在 golang-nuts 线程中建议的那样,并使用 if 条件对其进行测试
  • 使用基本模板包可以理解的东西(见下面我的代码)
  • 从模板中删除一些逻辑:您可以构造一个带有 selected bool 字段的数据类型,而不是使用 6 个硬编码字段,并将其中 6 个对象的数组提供给带有 范围语句

我使用一段 bool 值重新创建了您的示例:

func main() {
temp,err := template.ParseFiles("template.html")
if err != nil {
panic(err)
}

g := make([]bool, 7)
g[1] = true
temp.Execute(os.Stdout, &g)
}

模板中的一行如下所示:

<option value="3"{{ if index . 3 }} selected="selected"{{ end }}>Grade Three</option>

这对我来说看起来不太好。但我想说所有解决方案都有其缺点,这是一个口味问题(第三种解决方案应该更干净,但对于这么简单的事情可能被认为是矫枉过正)。

编辑 (2013/12/11)

Go 1.2 (released on 2013/12/01),template engine已更新并包括新的运算符,包括比较。现在应该可以按预期工作了:

{{if eq .Grade 1 }} selected="selected" {{end}}

不过,您仍然可以选择在模板中保留尽可能少的逻辑。

关于google-app-engine - GAE Go 模板包中的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179359/

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