有没有办法列出使用过的变量?

时间:2015-02-17 00:14:58

标签: templates go go-templates

我们说我有一个基本的文本/模板:

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

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

由于我的数据不是结构而是地图,因此.var将始终返回一些内容:如果它不存在,当我希望在执行模板时出现错误时,它将返回一个空字符串

所以对于上面的例子,我希望得到:

[var var2]

1 个答案:

答案 0 :(得分:2)

使用模板func,如果未设置值,则返回错误。像这样:

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