Maison >développement back-end >Golang >Comment supprimer la virgule de fin dans les boucles de plage de modèles Go ?

Comment supprimer la virgule de fin dans les boucles de plage de modèles Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 17:19:09391parcourir

How to Remove the Trailing Comma in Go Template Range Loops?

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!

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