Dans les modèles Go, lors d'une itération sur un tableau à l'aide du mot-clé range, un séparateur virgule est automatiquement inséré entre chaque élément. Bien que ce comportement soit utile dans la plupart des cas, il peut devenir un problème lorsque le résultat souhaité nécessite un point plutôt qu'une virgule après le dernier élément.
Considérez le programme suivant :
<code class="go">package main import ( "os" "text/template" ) func main() { params := map[string]interface{}{ "items": [3]int{1, 4, 2}, } tpl := "{{range $i, $el := .items}}{{$el}},{{end}}" lister, _ := template.New("foo").Parse(tpl) lister.Execute(os.Stdout, params) }</code>
Ce programme génère ce qui suit :
1,4,2,
Notez qu'il y a une virgule après le dernier élément (2). Cependant, nous préférerions que le résultat soit :
1,4,2.
Pour y parvenir, nous pouvons modifier le modèle comme suit :
<code class="go">tpl := "{{range $i, $el := .items}}{{if $i}},{{end}}{{$el}}{{end}}."</code>
La principale différence ici est l'introduction du { {if $i}},{{end}} construction. Cette instruction conditionnelle vérifie si l'itération actuelle de la boucle n'est pas la première, et si c'est le cas, elle émet une virgule. Cela garantit qu'une virgule n'est insérée qu'entre les éléments du tableau, et non après le dernier élément.
En incorporant ce changement, le programme affichera désormais :
1,4,2.
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!