Wie über slice of structs anstelle von struct Scheiben

Gespielt zu haben, um mit Gehen, HTML-templates ein bisschen, all die Beispiele, die ich gefunden für Schleifen über Objekte in Vorlagen wurden übergeben von Strukturen der Scheiben auf der Vorlage, so etwas wie in diesem Beispiel :

type UserList struct {
    Id   []int
    Name []string
}

var templates = template.Must(template.ParseFiles("main.html"))

func rootHandler(w http.ResponseWriter, r *http.Request) {
    users := UserList{
        Id:   []int{0, 1, 2, 3, 4, 5, 6, 7},
        Name: []string{"user0", "user1", "user2", "user3", "user4"},
    }
    templates.ExecuteTemplate(w, "main", &users)
}

mit der "main" - template wird :

{{define "main"}}
    {{range .Name}}
        {{.}}
    {{end}}
{{end}}

Dies funktioniert, aber ich verstehe nicht, wie soll ich Anzeige jede ID nur neben dem entsprechenden Namen, wenn ich bin, angefangen auf der .Name-Eigenschaft nur. Ich fände es logischer behandeln jeden Benutzer als ein Objekt der Gruppe seine Eigenschaften bei der Anzeige.

Daher meine Frage:

Was ist, wenn ich an Sie weitergeben wollte eine Scheibe von Strukturen, um die Vorlage? Was wäre die syntax um diese Arbeit zu machen? Ich habe noch nicht gefunden oder verstanden wird, wie in der offiziellen html/template doc.
Mir etwas suchen, aus der Ferne wie dieses:

type User struct {
    Id   int
    Name string
}
type UserList []User
var myuserlist UserList = ...

und eine Vorlage suchen, so etwas wie dies: (die syntax ist hier bewusst falsch, es ist nur zu bekommen verstanden)

{{define "main"}}
    {{for each User from myuserlist as myuser}}
        {{myuser.Id}}
        {{myuser.Name}}
    {{end}}
{{end}}
  • Lesen Sie diese: jan.newmarch.name/go/template/chapter-template.html - speziell zuweisen, um eine variable, die Sie aufrufen können, in den Bereich Schleife.
  • Das scheint ziemlich komplett auf das Thema, ich werde sicher sein, zu Lesen, es sehr bald. Danke.
  • Ja, es hatte sogar die Antwort auf Probleme, die ich erraten würde ich in später. Vielen Dank für diesen tollen link.
  • können Sie fügen Sie eine gültige URL?
Schreibe einen Kommentar