Umgang mit bedingtem Rendering in Go-HTML-Vorlagen
Beim Rendern von HTML-Vorlagen in Go ist es häufig erforderlich, Inhalte basierend auf bestimmten Bedingungen unterschiedlich anzuzeigen. Ein gängiger Ansatz ist die Verwendung verschachtelter if/elseif/else-Konstrukte. In Fällen mit einer großen Anzahl von Bedingungen kann dies jedoch zu unübersichtlichem Code führen.
Bedenken Sie die folgende Go-Struktur:
const ( paragraph_hypothesis = 1<<iota paragraph_attachment = 1<<iota paragraph_menu = 1<<iota ) type Paragraph struct { Type int // paragraph_hypothesis or paragraph_attachment or paragraph_menu }
Sie möchten Absätze auf eine Weise anzeigen, die davon abhängt ihre Art. Es ist zwar möglich, verschachtelte if-Anweisungen wie diese zu verwenden:
{{range .Paragraphs}} {{if .IsAttachment}} -- attachment presentation code -- {{else}}{{if .IsMenu}} -- menu -- {{else}} -- default code -- {{end}}{{end}} {{end}}
Dieser Ansatz wird bei mehr Typen unhandlich, was sowohl zu unübersichtlichem Go-Code (mit Funktionen wie IsSomething) als auch zu Vorlagencode (mit verschachtelten {{end} }-Anweisungen).
Glücklicherweise gibt es in Go-Vorlagen eine sauberere Lösung: das else if-Konstrukt. Damit können Sie die obige Vorlage wie folgt vereinfachen:
{{range .Paragraphs}} {{if .IsAttachment}} -- attachment presentation code -- {{else if .IsMenu}} -- menu -- {{else}} -- default code -- {{end}} {{end}}
Durch die Verwendung von else if können Sie die Notwendigkeit mehrerer verschachtelter if-Anweisungen überflüssig machen, wodurch Ihr Vorlagencode prägnanter und leichter verständlich wird.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit bedingtem Rendering in Go-HTML-Vorlagen mit Else If um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!