주어진 구문 분석된 템플릿에서 모든 작업 목록을 검색하는 방법 내에 정의됨 ?
우리가 사용할 메서드인 Template.Tree는 외부 사용을 위한 것이 아닙니다. html/template 패키지의 내부 작업을 위해서만 내보내집니다. 코드에서 이를 사용하면 향후 패키지 릴리스에서 예기치 않은 동작이 발생할 수 있습니다.
파싱된 템플릿은 내부적으로 다양한 노드로 구성된 트리(parse.Tree)로 표시됩니다. 각 노드는 텍스트, 필드, 함수 호출 등과 같은 템플릿 내의 특정 요소를 나타냅니다.
작업을 찾기 위해 이 트리를 재귀적으로 순회하면서 구문 분석 유형의 노드를 찾습니다.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!