Maison >développement back-end >Golang >Comment calculer des valeurs dans des modèles HTML avec Go ?
Calcul de valeurs dans des modèles HTML avec Go
Lorsque vous travaillez avec des modèles HTML dans Go, vous pouvez rencontrer des situations dans lesquelles vous devez effectuer des calculs dans le modèle lui-même. Cependant, la syntaxe que vous avez fournie, "{{ $length -1 }}", ne fonctionnera pas car les modèles ne sont pas destinés à être utilisés pour une logique complexe.
Pour calculer les valeurs dans un modèle, vous disposez de deux principaux options :
L'approche préférée et la plus simple consiste à calculer les valeurs en dehors du modèle et à les transmettre en tant que paramètres. Par exemple, si vous avez une carte et que vous souhaitez calculer le dernier index, vous pouvez le faire dans le contrôleur et transmettre le résultat au modèle comme ceci :
func IndexHandler(w http.ResponseWriter, r *http.Request) { m := make(map[string]string) // ... populate map ... lastIdx := len(m) - 1 data := struct { LastIdx int }{ LastIdx: lastIdx, } t, err := template.ParseFiles("template.html") if err != nil { // Handle error } t.Execute(w, data) }
Dans le modèle, vous pouvez simplement utiliser {{.LastIdx}} pour afficher le dernier index calculé.
Si vous avez besoin de calculs plus complexes ou si vous souhaitez les effectuer dans le modèle, vous pouvez enregistrer des fonctions personnalisées, puis les appeler à partir du modèle. Pour ce faire, utilisez le type template.FuncMap et enregistrez les fonctions comme ceci :
func init() { template.Funcs["subtractOne"] = func(x int) int { return x - 1 } }
Dans le modèle, vous pouvez ensuite appeler la fonction comme ceci :
{{ $lastIdx := subtractOne (len .) }} <p>The last index of this map is: {{ $lastIdx }} </p>
Ceci déduisez-en un de la longueur de la carte et stockez le résultat dans la variable $lastIdx.
N'oubliez pas que les modèles ne sont pas des langages de programmation à part entière, et leur objectif principal est de présenter des données. La logique complexe doit être gérée en dehors du modèle ou via des fonctions personnalisées.
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!