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
Mary-Kate Olsenoriginal
2024-12-17 04:16:25998parcourir

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
}

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))

Sortie :

[{{.name}} {{.age}}]

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!

Déclaration:
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