파싱된 템플릿에서 템플릿 필드 추출 이해
소개:
프로그래밍 방식으로 목록 검색 구문 분석된 Go 템플릿에 정의된 템플릿 작업은 특정 시나리오에서 일반적인 작업입니다. 이 기사에서는 Template.Tree 필드를 사용하여 이를 수행하는 기술을 살펴봅니다.
파싱된 템플릿 검사
템플릿의 구문 분석된 표현은 Template.Tree에 저장됩니다. 필드는 구문 분석 트리 인스턴스로 액세스 가능합니다. 이 트리에는 작업, 텍스트 및 제어 구조를 포함한 템플릿의 모든 구성 요소가 포함되어 있습니다.
템플릿 작업 식별
필드 평가 및 함수 호출과 같은 템플릿 작업 는 parse.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 }
예 사용법
t := template.Must(template.New("cooltemplate"). Parse(`<h1>{{ .name }} {{ .age }}</h1>`)) fmt.Println(ListTemplFields(t))
출력
[{{.name}} {{.age}}]
주의사항:
이 기술은 일반적으로 추출을 허용하지만 템플릿의 필드 작업에는 제한이 있습니다. 예를 들어 모든 제어 구조와 복잡한 템플릿 구문을 처리하지는 않습니다. 이는 기본 개념을 보여주기 위한 것이므로 그에 맞게 조정해야 합니다.
위 내용은 구문 분석된 Go 템플릿에서 프로그래밍 방식으로 필드 작업을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!