问题:
在 Go HTML 模板中,尝试执行如下计算模板中的 {{ $length -1 }} 不起作用。我们如何实现这个功能?
答案:
不幸的是,计算不能直接在 HTML 模板中执行。这是由于将复杂逻辑与模板分离的基本设计理念。
解决方案:
相反,请考虑以下替代方法:
1.将计算结果作为参数传递:
首选方法是在 Go 代码中计算所需值并将其作为模板参数传递。
func main() { length := len(myMap) t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ .LastIndex }}</p>`)) t.Execute(os.Stdout, map[string]interface{}{"LastIndex": length - 1}) }
2.注册自定义函数:
您还可以注册自定义函数并在模板中调用它们。这些函数可以执行计算并返回值。
func RegisterCalcFunc(t *template.Template) { t.Funcs["calcIndex"] = func(length int) int { return length - 1 } } func main() { RegisterCalcFunc(t) t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ calcIndex .Length }}</p>`)) t.Execute(os.Stdout, map[string]interface{}{"Length": len(myMap)}) }
以上是如何在Go HTML模板中进行计算?的详细内容。更多信息请关注PHP中文网其他相关文章!