Modèle Go : suppression de la dernière virgule dans une boucle de plage
Dans les modèles Go, lors d'une itération sur une plage d'éléments, une virgule est automatiquement ajouté après chaque élément. Cela peut être indésirable dans certains scénarios, par exemple lors de la génération d'une liste de valeurs sans la virgule finale.
Une façon de supprimer la dernière virgule consiste à accéder à l'index de l'élément pendant la boucle de plage. Cependant, cette approche n'est pas applicable aux cartes car elles ne fournissent pas d'index pour leurs éléments.
Solution utilisant Go 1.11
Depuis Go 1.11, il est possible de modifier les valeurs des variables du modèle dans le modèle lui-même. Cela permet de supprimer la dernière virgule avec le modèle suivant :
{{$first := true}} {{range $key, $value := $}} {{if $first}} {{$first = false}} {{else}} , {{end}} key:{{$key}} value:{{$value}} {{end}}
Le modèle définit une variable $first qui est initialement définie sur true. Pendant la boucle de plage, si $first est vrai, il est défini sur false et aucune virgule n'est ajoutée. Pour toutes les itérations suivantes, une virgule est ajoutée avant l'élément.
Exemple modifié
Voici une version mise à jour de l'exemple de la question qui supprime la virgule finale en utilisant le technique ci-dessus :
type Map map[string]string m := Map{ "a": "b", "c": "d", "e": "f", } const temp = `{{$first := true}}{{range $key, $value := $}}{{if $first}}{{$first = false}}{{else}}, {{end}}key:{{$key}} value:{{$value}}{{end}}` t := template.Must(template.New("example").Parse(temp)) t.Execute(os.Stdout, m)
Ce modèle affichera ce qui suit :
key:a value:b, key:c value:d, key:e value:f
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!