파싱된 템플릿에서 작업 목록 가져오기
질문:
검색하는 방법 템플릿 작업 목록(예: {{ .blahblah }}에서 정의한 작업) 구문 분석된 템플릿?
머리말:
언급한 대로 Template.Tree 필드는 템플릿 실행 시 입력 제공에 의존해서는 안 됩니다. 템플릿과 예상 데이터를 미리 정의하는 것이 중요합니다.
해결책:
파싱된 템플릿을 검사하려면 해당 구문 분석 트리(template.Template.Tree)를 탐색하세요. . 이 트리 내의 노드는 템플릿 작업을 포함한 다양한 요소를 나타냅니다. 여기서는pars.NodeAction(필드로 평가된 작업) 유형의 노드에 중점을 둡니다.
코드 예:
다음 코드는 구문 분석 트리를 재귀적으로 탐색하여 노드를 식별합니다. NodeAction을 사용하여 유형:
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 }
사용법:
구문 분석된 템플릿에서 ListTemplFields 함수를 호출하여 작업 목록을 검색합니다. 토큰:
t := template.Must(template.New("cooltemplate"). Parse(`<h1>{{ .name }} {{ .age }}</h1>`)) fmt.Println(ListTemplFields(t))
출력:
제공된 템플릿의 출력은 다음과 같습니다.
[{{.name}} {{.age}}]
위 내용은 구문 분석된 Go 템플릿에서 작업 목록을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!