我尝试使用带有文本/模板的漂亮表,但列没有对齐。 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
答案 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()
另外,在模板中添加要删除列的选项卡。