Heim >Backend-Entwicklung >Golang >Wie vermeide ich nachgestellte Kommas bei der Verkettung von Go-Textvorlagenzeichenfolgen?

Wie vermeide ich nachgestellte Kommas bei der Verkettung von Go-Textvorlagenzeichenfolgen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-25 15:08:13238Durchsuche

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

Sonderfallbehandlung für das letzte Element in Go-Textvorlagen

Im Textvorlagensystem von Go werden Zeichenfolgen wie „(p1, p2, p3)“ aus einem Array kann eine Herausforderung sein, insbesondere wenn es darum geht, Kommas am Schluss richtig zu setzen Element.

Nicht funktionierender Versuch

Ein Versuch, bei dem das abschließende Komma nicht entfernt werden kann, ist:

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}})"

Lösung

Dieses Rätsel kann gelöst werden, indem die spezielle Syntax von Template-IF-Anweisungen genutzt wird. Im Gegensatz zu Go-if-Anweisungen können Vorlagen-ifs auf Nullwerte testen. Dies ermöglicht den folgenden Trick:

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}})"

Die Magie liegt in der Zeile:

{{ if $index }},{{end}}

Die Variable $index wird während der Bereichsiteration automatisch zugewiesen und zum Testen verwendet letztes Element. Wenn der Index ungleich Null ist (d. h. nicht das letzte Element), wird ein Komma eingefügt. Dadurch wird sichergestellt, dass das letzte Element kein abschließendes Komma hat.

Das obige ist der detaillierte Inhalt vonWie vermeide ich nachgestellte Kommas bei der Verkettung von Go-Textvorlagenzeichenfolgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn