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!