Maison > développement back-end > Golang > le corps du texte

Comment puis-je transmettre des données sous forme d'arguments à un modèle inclus dans le système de modèles de Go ?

DDD
Libérer: 2024-10-28 04:29:30
original
661 Les gens l'ont consulté

How can I pass data as arguments to an included template in Go's templating system?

Transmission de données entre modèles

Dans le système de modèles de Go, il peut être nécessaire de transmettre des données entre plusieurs modèles, en particulier lorsqu'il s'agit d'inclure un modèle dans un autre. La question se pose : « Comment puis-je transmettre des données en tant qu'arguments à un modèle inclus et y accéder dans ce modèle ? »

Pour y parvenir, vous pouvez utiliser une fonction personnalisée qui fusionne les arguments en une seule valeur de tranche. En enregistrant cette fonction, elle peut être utilisée dans l'invocation du modèle. Le code suivant montre comment procéder :

<code class="go">package main

import (
    "fmt"
    "html/template"
)

func main() {
    t, err := template.New("t").Funcs(template.FuncMap{
        "args": func(vs ...interface{}) []interface{} { return vs },
    }).Parse("{{ template \"image_row\" args . 5 }}")
    if err != nil {
        fmt.Println(err)
        return
    }

    err = t.Execute(template.Must(template.ParseFiles("index.html", "image_row.html")), nil)
    if err != nil {
        fmt.Println(err)
        return
    }
}

// index.html
{{ template "image_row" . | 5 }}

// image_row.html
{{ define "image_row" }}
   To stuff here {{index . 0}} {{index . 1}}
{{ end }}</code>
Copier après la connexion

Dans le modèle image_row, les arguments sont accessibles à l'aide de la fonction d'index intégrée. Par exemple, {{index . 0}} accéderait au premier argument (index 0) transmis par le modèle index.html, dans ce cas le numéro 5.

Cette solution offre un moyen polyvalent de transmettre et d'accéder aux données entre plusieurs modèles, permettant des fonctionnalité et réutilisation efficace du code.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal