解析済みのテンプレートが与えられた場合、すべてのアクションのリストを取得するにはどうすればよいですか内で定義される
ここで使用するメソッド Template.Tree は、外部での使用を目的としていないことに注意してください。これは、html/template パッケージの内部動作のためにのみエクスポートされます。コード内でこれに依存すると、パッケージの将来のリリースで予期しない動作が発生する可能性があります。
解析されたテンプレートは、内部的にはさまざまなノードで構成されるツリー (parse.Tree) として表されます。各ノードは、テキスト、フィールド、関数呼び出しなど、テンプレート内の特定の要素を表します。
アクションを見つけるには、このツリーを再帰的に走査し、parse.NodeAction タイプのノードを探します。 。これらのノードは、フィールド評価などの非制御アクションを表します。
import ( "fmt" "html/template" "text/template/parse" ) func ListTemplateFields(t *template.Template) []string { return listNodeFields(t.Tree.Root, nil) } func listNodeFields(node parse.Node, results []string) []string { if node.Type() == parse.NodeAction { results = append(results, node.String()) } if listNode, ok := node.(*parse.ListNode); ok { for _, n := range listNode.Nodes { results = listNodeFields(n, results) } } return results }
t := template.Must(template.New("example").Parse(`{{ .name }} {{ .age }}`)) fields := ListTemplateFields(t) fmt.Println(fields)
[{{.name}} {{.age}}]
以上が解析された HTML テンプレートからすべてのアクションを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。