Maison >développement back-end >Golang >Comment puis-je transmettre plusieurs objets de données à un modèle Go ?

Comment puis-je transmettre plusieurs objets de données à un modèle Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 06:35:09471parcourir

How Can I Pass Multiple Data Objects to a Go Template?

Transmission de plusieurs données à un modèle Go

Dans Go, lorsque vous remplissez un modèle, vous pouvez transmettre une seule valeur, qui peut être une valeur composite telle qu'une structure, une carte ou une tranche.

Pour transmettre plusieurs objets de données à un template :

Utilisation d'une structure :

Créez une structure qui intègre les objets de données souhaités en tant que champs exportés :

type Data struct {
    Results []User // MongoDB query result
    Other   []int  // Integer array
}

Passez la structure à l'exécution du modèle :

data := &Data{results, []int{1, 2, 3}}
if err := GetTemplate("list").Execute(w, data); err != nil {
    // Handle error
}

Dans le modèle :

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}

Utilisation d'une carte :

Créer une carte avec les objets de données sous forme de paires clé-valeur :

m := map[string]interface{}{
    "Results": results,
    "Other":   []int{1, 2, 3},
}

Réussir la carte à l'exécution du modèle :

if err := GetTemplate("list").Execute(w, m); err != nil {
    // Handle error
}

Dans le modèle :

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}

Utilisation d'une tranche :

Bien que moins lisible, vous pouvez également transmettre une tranche d'interface{} :

s := []interface{}{
    results,
    []int{1, 2, 3},
}

Passez la tranche à l'exécution du modèle :

if err := GetTemplate("list").Execute(w, s); err != nil {
    // Handle error
}

Dans le modèle :

{{range index . 0}}
    User name: {{.Name}}
{{end}}

Other: {{index . 1}}

Remarque : les fonctions ou canaux personnalisés peuvent également être utilisés pour transmettre plusieurs objets de données, mais sont considérés comme des pratiques moins conventionnelles.

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