Maison >développement back-end >Golang >Comment effectuer des calculs dans les modèles Go HTML ?

Comment effectuer des calculs dans les modèles Go HTML ?

DDD
DDDoriginal
2024-11-14 22:13:02626parcourir

How to Perform Calculations in Go HTML Templates?

Comment effectuer des calculs dans les modèles HTML ?

Problème :

Dans les modèles Go HTML, tenter d'effectuer des calculs comme {{ $length -1 }} dans un modèle ne fonctionne pas. Comment pouvons-nous réaliser cette fonctionnalité ?

Réponse :

Malheureusement, les calculs ne peuvent pas être effectués directement dans les modèles HTML. Cela est dû à la philosophie fondamentale de conception consistant à séparer la logique complexe des modèles.

Solutions :

Considérez plutôt ces approches alternatives :

1. Transmettre les résultats calculés en tant que paramètres :

La méthode préférée consiste à calculer la valeur souhaitée dans votre code Go et à la transmettre en tant que paramètre de modèle.

func main() {
    length := len(myMap)
    t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ .LastIndex }}</p>`))
    t.Execute(os.Stdout, map[string]interface{}{"LastIndex": length - 1})
}

2. Enregistrez des fonctions personnalisées :

Vous pouvez également enregistrer des fonctions personnalisées et les appeler dans vos modèles. Ces fonctions peuvent effectuer des calculs et renvoyer des valeurs.

func RegisterCalcFunc(t *template.Template) {
    t.Funcs["calcIndex"] = func(length int) int { return length - 1 }
}

func main() {
    RegisterCalcFunc(t)
    t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ calcIndex .Length }}</p>`))
    t.Execute(os.Stdout, map[string]interface{}{"Length": len(myMap)})
}

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