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!