So greifen Sie in Go auf Vorlagen-„Aktionen“ zu
Vorlagen bieten eine leistungsstarke Möglichkeit, Daten in strukturierten Text umzuwandeln. In manchen Fällen kann es wünschenswert sein, eine Vorlage zu untersuchen, um die Liste der Aktionen zu bestimmen, die sie definiert.
Vorlagenstruktur
Eine analysierte Vorlage wird als Baum dargestellt Knoten. Jeder Knoten stellt ein bestimmtes Konstrukt innerhalb der Vorlage dar, z. B. Text, Aktionen oder Kontrollstrukturen.
Aktionen identifizieren
Aktionen sind Knoten, die definieren, wie Daten abgerufen werden sollen oder verarbeitet. Sie können verwendet werden, um auf Felder zuzugreifen oder Funktionen im Datenmodell aufzurufen. Um Aktionsknoten im Baum zu identifizieren, suchen Sie nach Knoten vom Typ parse.NodeAction.
Beispielimplementierung
Hier ist eine Beispielfunktion, die den Vorlagenbaum rekursiv durchläuft und alle sammelt Aktionsknoten:
func ListTemplateActions(t *template.Template) []string { return listNodeActions(t.Tree.Root, nil) } func listNodeActions(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 = listNodeActions(n, res) } } return res }
Diese Funktion gibt einen Abschnitt von Zeichenfolgen zurück, der die Textdarstellung von enthält Jeder Aktionsknoten.
Verwendung
Um diese Funktion zu verwenden, analysieren Sie die Vorlage und rufen Sie dann ListTemplateActions auf. Zum Beispiel:
t := template.Must(template.New("test"). Parse(`<p>{{ .name }} - {{ .age }}</p>`)) fmt.Println(ListTemplateActions(t))
Ausgabe:
[{{.name}} {{.age}}]
Diese Demonstration zeigt, wie Sie eine Liste von Aktionen identifizieren und abrufen, die in einer analysierten Vorlage definiert sind, sodass Sie die erwartete Eingabe bestimmen und abrufen können Konstruieren Sie das Datenmodell dynamisch entsprechend.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich eine Liste von Aktionen aus einer Go-Vorlage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!