Maison > développement back-end > Golang > Comment extraire par programme des actions de champ à partir de modèles Go analysés ?

Comment extraire par programme des actions de champ à partir de modèles Go analysés ?

Barbara Streisand
Libérer: 2024-12-18 11:46:10
original
809 Les gens l'ont consulté

How to Programmatically Extract Field Actions from Parsed Go Templates?

Comprendre l'extraction des champs de modèle à partir de modèles analysés

Introduction :

Récupération par programme d'une liste de Les actions de modèle définies dans les modèles Go analysés sont une tâche courante dans certains scénarios. Cet article explore une technique pour y parvenir en utilisant le champ Template.Tree.

Inspection des modèles analysés

La représentation analysée d'un modèle est stockée dans Template.Tree champ, accessible en tant qu’instance parse.Tree. Cet arbre contient tous les composants d'un modèle, y compris les actions, les textes et les structures de contrôle.

Identification des actions du modèle

Actions du modèle, telles que l'évaluation des champs et les appels de fonction. , sont représentés par des nœuds de type parse.NodeAction. Pour extraire une liste de ces actions de l'arborescence, nous pouvons parcourir récursivement sa structure et vérifier le type de chaque nœud.

Exemple d'implémentation

Le code suivant démontre un exemple d'implémentation qui récupère une liste d'actions de modèle :

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

Exemple Utilisation

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

Sortie

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

Mises en garde :

Bien que cette technique permette généralement d'extraire actions sur le terrain à partir de modèles, il a des limites. Par exemple, il ne gère pas toutes les structures de contrôle et la syntaxe complexe des modèles. Il est destiné à démontrer les concepts sous-jacents et doit être adapté en conséquence.

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