使用tabwriter

时间:2016-04-17 14:07:21

标签: go

我尝试使用带有文本/模板的漂亮表,但列没有对齐。 text / tabwriter工作,但文本/模板使代码更清晰。

如何将text / template与text / tabwriter一起使用?

这是我的测试:

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)
}

输出:

title1
item1   body1
item2   body2
verylongitem3   body3

1 个答案:

答案 0 :(得分:6)

替换

t.Execute(os.Stdout, data)

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

另外,在模板中添加要删除列的选项卡。

playground example