Maison >développement back-end >Golang >Comment personnaliser la sortie d'index dans les modèles Go : pouvez-vous faire de l'arithmétique dans les modèles ?

Comment personnaliser la sortie d'index dans les modèles Go : pouvez-vous faire de l'arithmétique dans les modèles ?

DDD
DDDoriginal
2024-11-17 14:45:02653parcourir

How to Customize Index Output in Go Templates: Can You Do Arithmetic in Templates?

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!

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