我有这样的注释对象:
Annotations: map[string]string{
"common": "Some GPM consistency checkers have failed.",
"t_0": "Title1",
"t_1": "Title2",
"v_0": "V1",
"v_1": "V2",
我想把它打印在表格中,像
<表类>Title1 Title2 tbody><<tr>V1 V2 表类>
我认为你应该在你的Go模板中添加一个辅助函数。
var testTemplate *template.Template
func main() {
var err error
testTemplate, err = template.ParseFiles("hello.gohtml")
if err != nil {
panic(err)
}
http.HandleFunc("/", handler)
http.ListenAndServe(":3000", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
data := struct {
FindValue func(ann map[string]string, needle string) string
Annotations map[string]string
}{
FindValue,
map[string]string{
"common": "Some GPM consistency checkers have failed.",
"t_0": "Title1",
"t_1": "Title2",
"v_0": "V1",
"v_1": "V2",
},
}
err := testTemplate.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func FindValue(ann map[string]string, needle string) string {
var code = strings.Replace(needle, "t_", "", 1)
for key, val := range ann {
if key == "v_"+code {
return val
}
}
return ""
}
,那么你可以在模板中使用这个函数,像这样:
{{ range $key, $value := .Annotations.SortedPairs }}
{{ if match "^t_" .$key }}
<p>{{FindValue ".$key"}}</p>
{{ end }}
{{ end }}
我希望这对你有帮助。如果有任何问题告诉我,因为我没有测试这段代码。