Maison > développement back-end > Golang > Comment éviter les virgules de fin dans la concaténation de chaînes de modèles de texte Go ?

Comment éviter les virgules de fin dans la concaténation de chaînes de modèles de texte Go ?

Mary-Kate Olsen
Libérer: 2024-12-25 15:08:13
original
238 Les gens l'ont consulté

How to Avoid Trailing Commas in Go Text Template String Concatenation?

Gestion des cas spéciaux pour le dernier élément dans les modèles de texte Go

Dans le système de modèles de texte Go, créer des chaînes telles que "(p1, p2, p3)" à partir d'un tableau peut être difficile, en particulier lors du placement correct des virgules pour le dernier élément.

Tentative qui ne fonctionne pas

Une tentative qui ne parvient pas à supprimer la virgule de fin est :

import (
    "text/template"
    "os"
)

func main() {
    ip := []string{"p1", "p2", "p3"}
    temp := template.New("myTemplate")
    _, _ = temp.Parse(paramList)
    temp.Execute(os.Stdout, ip)
}

const paramList = "{{ $i := . }}({{ range $i }}{{ . }}, {{end}})"
Copier après la connexion

Solution

Ce casse-tête peut être résolu en tirant parti de la syntaxe spéciale des instructions if du modèle. Contrairement aux instructions Go if, les modèles if peuvent tester les valeurs nulles. Cela permet l'astuce suivante :

import (
    "text/template"
    "os"
)

func main() {
    ip := []string{"p1", "p2", "p3"}
    temp := template.New("myTemplate")
    _, _ = temp.Parse(paramList)
    temp.Execute(os.Stdout, ip)
}

const paramList = "{{ $i := . }}({{ range $i }}{{ if $index }},{{end}}{{ . }}{{end}})"
Copier après la connexion

La magie réside dans la ligne :

{{ if $index }},{{end}}
Copier après la connexion

La variable $index est automatiquement affectée lors de l'itération de plage et est utilisée pour tester la dernier élément. Si l'index est différent de zéro (c'est-à-dire qu'il ne s'agit pas du dernier élément), une virgule est insérée. Cela garantit que le dernier élément n'a pas de virgule finale.

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