Maison > développement back-end > Golang > Comment extraire une liste d'actions d'un modèle Go ?

Comment extraire une liste d'actions d'un modèle Go ?

Mary-Kate Olsen
Libérer: 2024-12-17 04:16:25
original
960 Les gens l'ont consulté

How to Extract a List of Actions from a Go Template?

Comment accéder aux modèles « Actions » dans Go

Les modèles fournissent un moyen puissant de restituer des données en texte structuré. Dans certains cas, il peut être souhaitable d'introspecter un modèle pour déterminer la liste d'actions qu'il définit.

Structure du modèle

Un modèle analysé est représenté sous la forme d'un arbre de nœuds. Chaque nœud représente une construction spécifique au sein du modèle, telle que du texte, des actions ou des structures de contrôle.

Identification des actions

Les actions sont des nœuds qui définissent la manière dont les données doivent être récupérées. ou transformés. Ils peuvent être utilisés pour accéder à des champs ou appeler des fonctions dans le modèle de données. Pour identifier les nœuds d'action dans l'arborescence, recherchez les nœuds de type parse.NodeAction.

Exemple de mise en œuvre

Voici un exemple de fonction qui parcourt de manière récursive l'arborescence des modèles et collecte tous nœuds d'action :

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

Cette fonction renvoie une tranche de chaînes contenant la représentation textuelle de chaque action node.

Utilisation

Pour utiliser cette fonction, analysez le modèle, puis appelez ListTemplateActions. Par exemple :

t := template.Must(template.New("test").
    Parse(`<p>{{ .name }} - {{ .age }}</p>`))
fmt.Println(ListTemplateActions(t))
Copier après la connexion

Sortie :

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

Cette démonstration montre comment identifier et récupérer une liste d'actions définies dans un modèle analysé, vous permettant de déterminer l'entrée qu'il attend et construire dynamiquement le modèle de données 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