0

我的模板目前看起来像这样:

{{range .Users}}
<div ...>
   <div class="row XXXX">
</div>
{{end}}

必须将 XXX 替换为基于 User 结构的属性的 css 类,UserLevel 是一个字符串。

所以根据 UserLevel 的值,我将显示正确的 css 类:

UserLevel 是“beg”,那么我需要输出“beginner”。UserLevel 是“int”,那么我需要输出“intermediate”等。

我知道我可以重命名 css 类以匹配属性的值,但我不想在 2.x 之间保持紧密耦合。

由于 if 语句中不允许使用表达式,这是否可能以某种方式进行?

4

1 回答 1

1

有几种方法可以做到这一点,我将介绍两种。第一种方法是在模板中使用 if 语句和相等测试:

{{range $count, $user := .Users}}
<div ...>
   <div class="row {{if eq $user.UserLevel "beg"}}beginner{{else if eq $user.UserLevel "int" }}intermediate{{else}}default{{end}}">
</div>
{{end}}

第二种方法是为 User 定义一个函数,它根据UserLevel属性输出正确的类:

func (u User) CssClass() string {
    switch u.UserLevel {
    case "beg":
        return "beginner"
    case "int":
        return "intermediate"
    default:
        return ""
    }
}

{{range $count, $user := .Users}}
<div ...>
   <div class="row {{$user.CssClass}}">
</div>
{{end}}

我把这个小测试代码放在Go 操场上,两者都使用正确的类产生相同的输出。

于 2016-05-29T18:00:20.383 回答