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
Libérer: 2024-12-09 17:19:09
original
392 Les gens l'ont consulté

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}}
Copier après la connexion

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)
Copier après la connexion

Ce modèle affichera ce qui suit :

key:a value:b, key:c value:d, key:e value:f
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal