Personnalisation de la sortie d'index dans les modèles Go : arithmétique dans les modèles
Dans les modèles Go, l'action de plage permet une itération pratique dans les tableaux, fournissant à la fois le élément et son index de base zéro. Cependant, pour certains scénarios, vous devrez peut-être modifier les indices affichés pour repartir d'une valeur non nulle.
Pourquoi l'approche initiale échoue
Initialement, la tentative pour effectuer des opérations arithmétiques dans le modèle, telles que "{{$index 1}}", entraîne une erreur de "syntaxe de nombre illégale". En effet, le langage modèle ne prend pas automatiquement en charge les opérations arithmétiques.
La solution : fonctions personnalisées
Pour obtenir le comportement souhaité, il est nécessaire de définir une fonction personnalisée. qui effectue l'opération arithmétique en dehors du modèle. Dans ce cas, nous créons une fonction appelée "inc" qui incrémente l'index donné de 1.
Voici le code du modèle Go modifié qui intègre la fonction "inc":
tmpl, err := template.New("test").Funcs(funcMap).Parse( `{{range $index, $element := .}} Number: {{inc $index}}, Text:{{$element}} {{end}}` )
Le La fonction personnalisée est définie comme suit :
func inc(i int) int { return i + 1 }
Utilisation
Pour utiliser le fonction personnalisée, elle doit être enregistrée auprès du FuncMap du modèle. L'exemple fourni initialise un FuncMap et y ajoute la fonction "inc", permettant au modèle d'y accéder.
Dans ce scénario, le modèle parcourt une tranche de chaînes, affichant les indices modifiés et les éléments correspondants.
Conclusion
En créant des fonctions personnalisées, vous pouvez étendre les capacités des modèles Go pour effectuer des opérations qui ne sont pas pris en charge de manière native dans la syntaxe du langage modèle. Cela permet une plus grande flexibilité et permet des opérations complexes telles que la manipulation arithmétique dans les modèles.
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!