Verwenden Sie die If-Else- und Switch-Schleife innerhalb der HTML-Vorlage in Golang

Jay Singh 20 Juni 2023
  1. Verwenden Sie die if-else-Schleife innerhalb von HTML-Vorlagen in Golang
  2. Verwenden Sie das switch Loop Inside HTML-Template in Golang
Verwenden Sie die If-Else- und Switch-Schleife innerhalb der HTML-Vorlage in Golang

HTML-Vorlage ist ein Golang (Go)-Paket, das datengesteuerte Vorlagen zum Erstellen sicherer HTML-Ausgaben gegen Code-Injektion unterstützt. Ein bedeutender Vorteil der Verwendung von HTML/Templates besteht darin, dass es eine sichere HTML-Ausgabe mit Escapezeichen generiert, indem kontextabhängiges automatisches Escapezeichen verwendet wird.

Daher sollte immer dann, wenn die Ausgabe HTML ist, das HTML-Vorlagenpaket anstelle einer Textvorlage verwendet werden. Sehen wir uns einige Beispiele für die Verwendung von if-else und switch in der HTML-Vorlage an.

Verwenden Sie die if-else-Schleife innerhalb von HTML-Vorlagen in Golang

In diesem Beispiel erstellen wir zwei Strukturen, um die Daten unserer ToDo-Listenelemente zu speichern: ToDo und PageData. Das definierte HTML-Template tmpl wird erstellt und geparst.

Schließlich rendern wir unser HTML, indem wir es der Funktion Execute(), den Daten und dem geparsten HTML-Template übergeben.

Code:

package main
import (
    "html/template"
    "log"
    "os"
)

type Todo struct {
    Title string
    Done  bool
}

type PageData struct {
    PageTitle string
    Todos     []Todo
}

func main() {
    const tmpl = `
    <h1>{{.PageTitle}}</h1>
    <ul>
        {{range .Todos}}
            {{if .Done}}
                <li>{{.Title}} &#10004</li>
            {{else}}
                <li>{{.Title}}</li>
            {{end}}
        {{end}}
    </ul>`
    t, err := template.New("webpage").Parse(tmpl)
    if err != nil {
        log.Fatal(err)
    }
    data := PageData{
        PageTitle: "Personal TODO list",
        Todos: []Todo{
            {Title: "Task 1", Done: true},
            {Title: "Task 2", Done: false},
            {Title: "Task 3", Done: false},
        },
    }
    t.Execute(os.Stdout, data)
}

Ausgang:

Personal TODO list
Task 1 ✔
Task 2
Task 3

Verwenden Sie das switch Loop Inside HTML-Template in Golang

Code:

package main
import (
    "fmt"
    "html/template"
    "os"
)

func main() {
    const (
        paragraph_hypothesis = 1 << iota
        paragraph_attachment = 1 << iota
        paragraph_menu       = 1 << iota
    )

    const text = "{{.Paratype | printpara}}\n"

    type Paragraph struct {
        Paratype int
    }

    var paralist = []*Paragraph{
        &Paragraph{paragraph_hypothesis},
        &Paragraph{paragraph_attachment},
        &Paragraph{paragraph_menu},
    }

    t := template.New("testparagraphs")

    printPara := func(paratype int) string {
        text := ""
        switch paratype {
        case paragraph_hypothesis:
            text = "This is a hypothesis testing\n"
        case paragraph_attachment:
            text = "This is using switch case\n"
        case paragraph_menu:
            text = "Menu\n1:\n2:\n3:\n\nPick any option:\n"
        }
        return text
    }

    template.Must(t.Funcs(template.FuncMap{"printpara": printPara}).Parse(text))

    for _, p := range paralist {
        err := t.Execute(os.Stdout, p)
        if err != nil {
            fmt.Println("executing template:", err)
        }
    }
}

Ausgang:

This is a hypothesis testing

This is using switch case

Menu
1:
2:
3:

Pick any option: