2016-04-17 4 views
2

Ich versuche, eine schöne Tabelle mit Text/Vorlage zu haben, aber die Spalten sind nicht ausgerichtet. Text/Tabwriter arbeiten, aber Text/Vorlage machen einen saubereren Code.gehen Text/Vorlage mit Tabwriter

Wie kann ich Text/Vorlage mit Text/Tabwriter verwenden?

Dies ist mein Test:

package main 

import (
    "os" 
    "text/template" 
) 

type a struct { 
    Title string 
    Items []items 
} 

type items struct { 
    Title string 
    Body string 
} 

const templ = `{{.Title}}{{range .Items}} 
{{.Title}} {{.Body}}{{end}} 
` 

func main() { 
    data := a{ 
     Title: "title1", 
     Items: []items{ 
      {"item1", "body1"}, 
      {"item2", "body2"}, 
      {"verylongitem3", "body3"}}, 
    } 
    t := template.New("test") 
    t, _ = t.Parse(templ) 
    t.Execute(os.Stdout, data) 
} 

Ausgang:

title1 
item1 body1 
item2 body2 
verylongitem3 body3 

Antwort

5

ersetzen
t.Execute(os.Stdout, data) 

mit

w := tabwriter.NewWriter(os.Stdout, 8, 8, 8, ' ', 0) 
if err := t.Execute(w, data); err != nil { 
    // handle error 
} 
w.Flush() 

Fügen Sie außerdem Registerkarten zu der Vorlage hinzu, an der die Spalten unterbrochen werden sollen.

playground example