5

假设我有一个基本的 go 文本/模板:

{{.var}} is another {{.var2}}

我想获取模板中使用的变量名称数组,如果它们在我传递执行的数据中不可用,则能够跳过执行,是否有可能以某种方式做到这一点?

由于我的数据不是结构而是映射,所以 .var 总是会返回一些东西:如果它不存在,它会返回一个空字符串,而我希望在执行模板时会出错。

因此,对于上面的示例,我希望得到:

[var var2]
4

1 回答 1

5

如果未设置值,请使用返回错误的模板函数。像这样的东西:

template.FuncMap(map[string]interface{}{
    "require": func(val interface{}) (interface{}, error) {
        if val == nil {
            return nil, errors.New("Required value not set.")
        }
        return val, nil
    },
}))

然后在您的模板中:

{{require .Value}}

http://play.golang.org/p/qZMBID7Y8L

于 2015-02-22T06:40:43.977 回答