英文:
Calling FuncMap and condition function
问题
我想在模板中与if一起调用FuncMap,类似于:
{{if lt myFunc .templateVariable condition}} <span class="foo"> {{.templateVar}}</span> {{else}} {{.templateVar}} {{end}}
查看文档,只显示了这个:
{{if eq .A 1 2 3 }} equal {{else}} not equal {{end}}
在Go中是否可能实现这个?
英文:
I want to call a FuncMap in a template together with an if, something like:
{{if lt myFunc .templateVariable condition}} <span class="foo"> {{.templateVar}}</span> {{else}} {{.templateVar}} {{end}}
Looking at the docs it shows this only:
{{if eq .A 1 2 3 }} equal {{else}} not equal {{end}}
Is this possible in Go?
答案1
得分: 3
你是不是在寻找这样的内容?
func main() {
funcMap := template.FuncMap{
"calculate": func(i int) int { return 42 },
}
tmpl := `{{$check := eq (calculate 1) 42}}{{if $check}}正确答案{{end}}{{if not $check}}错误答案{{end}}`
t, _ := template.New("template").Funcs(funcMap).Parse(tmpl)
t.Execute(os.Stdout, "x")
}
点击这里 运行代码。
英文:
Are you looking for something like this?
func main() {
funcMap := template.FuncMap{
"calculate": func(i int) int { return 42 },
}
tmpl := `{{$check := eq (calculate 1) 42}}{{if $check}}Correct answer{{end}}{{if not $check}}Wrong answer{{end}}`
t, _ := template.New("template").Funcs(funcMap).Parse(tmpl)
t.Execute(os.Stdout, "x")
}
答案2
得分: 0
听起来你应该在模板之外定义自己的函数,该函数接受所需的数据并返回一个整数/布尔值,这样在模板中可以保持逻辑尽可能简单。在你的Go代码中,可以这样写:
func (p *templateData) myFunc(templateVar Type, condition Type) int {
// 逻辑处理
return 0
}
在你的模板中:
{{if lt myFunc .templateVariable }} ...
请注意,这只是一个示例,你需要根据实际情况进行适当的修改。
英文:
Sounds like you should define your own function outside of the template, which accepts the required data and returns a int/bool so in the template you can keep the logic as simple as possibleL
It would be something like this in your Go code:
func (p *templateData) myFunc(templateVar Type, condition Type) int {
// logic
return 0
}
Within your template:
{{if lt myFunc .templateVariable }} ...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论