파싱된 템플릿에서 템플릿 작업 목록 검색
템플릿에 정의된 템플릿을 문자열 조각으로 추출하려면 어떻게 해야 합니까? 다음과 같은 템플릿을 고려해보세요.
<h1>{{ .name }} {{ .age }}</h1>
[]string{"name", "age"}를 얻고 싶습니다.
파싱된 템플릿 트리 검사
파싱된 템플릿은 템플릿 구조에 대한 세부정보가 포함된 템플릿 트리로 표현됩니다. 이 트리의 각 노드에는 해당 유형에 대한 정보를 제공하는 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))
출력은 be:
[{{.name}} {{.age}}]
참고: 이 데모는 포괄적이지 않으며 모든 경우를 처리하지 못할 수도 있습니다. 다만, 파싱된 템플릿 트리를 성찰하여 템플릿 액션을 추출하는 개념을 보여주고 있습니다.
위 내용은 구문 분석된 Go 템플릿에서 템플릿 필드 이름을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!