從解析的範本中擷取範本操作清單
如何將範本中定義的範本提取為字串片段?考慮這樣的範本:
<h1>{{ .name }} {{ .age }}</h1>
您希望取得[]string{"name", "age"}.
檢查解析的範本樹
解析後的模板由包含模板結構詳細資訊的template.Tree 表示。該樹的每個節點都有一個 Node.Type() 方法,提供有關其類型的信息。相關類型包括:
迭代樹
迭代樹import ( "text/template/parse" ) func ListTemplFields(t *template.Template) []string { return listNodeFields(t.Tree.Root, nil) } func listNodeFields(node parse.Node, res []string) []string { if node.Type() == parse.NodeAction { res = append(res, node.String()) } if ln, ok := node.(*parse.ListNode); ok { for _, n := range ln.Nodes { res = listNodeFields(n, res) } } return res }
迭代樹
t := template.Must(template.New("cooltemplate"). Parse(`<h1>{{ .name }} {{ .age }}</h1>`)) fmt.Println(ListTemplFields(t))迭代樹
[{{.name}} {{.age}}]要識別模板中的操作,您可以迭代樹並探索節點。以下範例函數示範了此過程:
範例用法決定範本所需的欄位:輸出將是:注意:此演示並不全面,可能無法處理所有情況。然而,它說明了透過內省解析的模板樹來提取模板操作的概念。
以上是如何從解析的 Go 模板中提取模板欄位名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!