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

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
DDDoriginal
2024-10-28 04:29:30609parcourir

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>

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!

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