Maison > développement back-end > Golang > Comment extraire des Scripts d'Actions à partir d'un modèle Go analysé ?

Comment extraire des Scripts d'Actions à partir d'un modèle Go analysé ?

Linda Hamilton
Libérer: 2024-12-16 12:12:11
original
583 Les gens l'ont consulté

How to Extract Action Lists from a Parsed Go Template?

Obtention d'un liste d'actions à partir d'un modèle analysé

Question :

Comment puis-je récupérer une liste d'actions de modèle (telles que celles définies par {{ .blahblah }}) à partir d'un modèle ?

Avant-propos :

Le champ Template.Tree, comme mentionné, ne doit pas être utilisé pour la fourniture d'entrées dans l'exécution du modèle. Il est crucial de définir au préalable le modèle et ses données attendues.

Solution :

Pour inspecter un modèle analysé, parcourez son arbre d'analyse (template.Template.Tree) . Les nœuds de cette arborescence représentent divers éléments, y compris les actions de modèle. Ici, nous nous concentrons sur les nœuds de type parse.NodeAction (actions évaluées en tant que champs).

Exemple de code :

Le code suivant parcourt l'arbre d'analyse de manière récursive pour identifier les nœuds. avec le NodeAction tapez :

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
}
Copier après la connexion

Utilisation :

Invoquez la fonction ListTemplFields sur un modèle analysé pour récupérer une liste de jetons d'action :

t := template.Must(template.New("cooltemplate").
    Parse(`<h1>{{ .name }} {{ .age }}</h1>`))
fmt.Println(ListTemplFields(t))
Copier après la connexion

Sortie :

La sortie du modèle fourni sera être :

[{{.name}} {{.age}}]
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal