你怎么能计算走的HTML模板里面的东西?
例如:
{{ $length := len . }}
<p>The last index of this map is: {{ $length -1 }} </p>
是的.
是地图。
该代码{{ $length -1 }}
不工作,是有办法做到这一点?
你怎么能计算走的HTML模板里面的东西?
例如:
{{ $length := len . }}
<p>The last index of this map is: {{ $length -1 }} </p>
是的.
是地图。
该代码{{ $length -1 }}
不工作,是有办法做到这一点?
你不能。 模板是不是一种脚本语言。 在设计理念,复杂的逻辑应该是外面的模板。
要么通过所计算出的结果作为参数(优选/最容易的),或寄存器中可以模板执行期间调用,将值传递给它们,可以执行计算和返回任何值的自定义功能(例如返回param - 1
)。
用于注册和使用自定义功能的实例,参见:
Golang模板(并传递到funcs中模板)
如何通过变量访问对象字段模板?
迭代转到地图获取指标 。
您可以使用像FuncMap 这样 。 一旦你funcmap中定义的函数,你可以在HTML中使用它。 你的情况,你可以定义计算定地图的长度,并返回给你一个MapLength功能或类似的东西。 然后,您可以调用它的模板有点像这样:
<p>The last index of this map is: {{ .MapLength . }} </p>
其他的答案是正确的,你不能做到这一点在模板本身。 但是,这里有一个如何使用工作示例Funcs
:
package main
import (
"fmt"
"html/template"
"os"
)
type MyMap map[string]string
func LastMapIndex(args ...interface{}) string {
if m, ok := args[0].(MyMap); ok && len(args) == 1 {
return fmt.Sprintf("%d", len(m) - 1)
}
return ""
}
func main() {
myMap := MyMap{}
myMap["foo"] = "bar"
t := template.New("template test")
t = t.Funcs(template.FuncMap{"LastMapIndex": LastMapIndex})
t = template.Must(t.Parse("Last map index: {{.|LastMapIndex}}\n"))
t.Execute(os.Stdout, myMap)
}
游乐场: https://play.golang.org/p/YNchaHc5Spz