Heim > Backend-Entwicklung > Golang > Wie erkennt man das letzte Element in einem Vorlagenbereich in Go?

Wie erkennt man das letzte Element in einem Vorlagenbereich in Go?

Patricia Arquette
Freigeben: 2024-11-09 03:46:02
Original
548 Leute haben es durchsucht

How to Detect the Last Item in a Template Range in Go?

Erkennen des letzten Elements in einem Vorlagenbereich

Beim Arbeiten mit Vorlagen kann es vorkommen, dass Sie das letzte Element in einem Vorlagenbereich bestimmen müssen eine Reichweite. Dies kann besonders nützlich sein, wenn Sie die Ausgabe basierend auf der Position des aktuellen Elements anpassen möchten.

Betrachten Sie die folgende Vorlage:

{{range $i, $e := .SomeField}}
    {{if $i}}, {{end}}
    $e.TheString
{{end}}
Nach dem Login kopieren

Diese Vorlage erzeugt eine Ausgabe wie:

one, two, three
Nach dem Login kopieren

Wenn Sie die Ausgabe jedoch folgendermaßen ändern möchten:

one, two, and three
Nach dem Login kopieren
Nach dem Login kopieren

Sie benötigen eine Möglichkeit, zu erkennen, dass das aktuelle Element das letzte Element im Bereich ist.

Implementierung

Der traditionelle Ansatz, Variablen zum Speichern der Array-Länge und des aktuellen Index zu verwenden, funktioniert in Vorlagen nicht effektiv. Glücklicherweise gibt es eine Lösung mit benutzerdefinierten Vorlagenfunktionen:

package main

import (
    "os"
    "reflect"
    "text/template"
)

var fns = template.FuncMap{
    "last": func(x int, a interface{}) bool {
        return x == reflect.ValueOf(a).Len() - 1
    },
}
Nach dem Login kopieren

Diese Funktion prüft, ob der bereitgestellte Index x gleich der Länge des Arrays a minus 1 ist, was anzeigt, dass es das letzte Element ist.

Verwendung

Um diese Funktion in Ihrer Vorlage zu verwenden, können Sie sie wie folgt aufrufen:

{{range  $i, $e := .}}{{if $i}}, {{end}}{{if last $i $}}and {{end}}{{$e}}{{end}}.`
Nach dem Login kopieren

Diese Vorlage erzeugt die gewünschte Ausgabe von:

one, two, and three
Nach dem Login kopieren
Nach dem Login kopieren

Zusätzliche Optimierung

Sie können alternativ die Len-Funktion ohne Reflexion verwenden, um das gleiche Ergebnis zu erzielen und so die Effizienz dieser Lösung weiter zu steigern.

Das obige ist der detaillierte Inhalt vonWie erkennt man das letzte Element in einem Vorlagenbereich in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage