Wechseln Sie oder if / elseif / else in Golang-HTML-Vorlagen

Ich habe diese 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
}

Ich möchte meine Absätze in a anzeigenType abhängig Weise.

Die einzige Lösung, die ich fand, basierte auf dedizierten Funktionen wieisAttachment Testen derType in Go und verschachtelt{{if}} :

{{range .Paragraphs}}
    {{if .IsAttachment}}
        -- attachement presentation code  --
    {{else}}{{if .IsMenu}}
        -- menu --
    {{else}}
        -- default code --
    {{end}}{{end}}
{{end}}

Tatsächlich habe ich mehr Typen, was es noch seltsamer macht und sowohl den Go-Code mit überfülltIsSomething funktionen und die vorlage mit denen{{end}}.

Was ist die saubere Lösung? Gibt es einigeswitch oderif/elseif/else Lösung in Go-Vorlagen? Oder eine ganz andere Art, mit diesen Fällen umzugehen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage