Golang:通过切片范围并生成HTML表格

时间:2015-04-05 19:34:17

标签: go

我有一个字符串切片,我想通过切片来创建一个带有值的简单HTML表。这是一些示例代码来说明:

var tmpl = `<td>%s</td>`
names := []string{"john", "jim"}
    for _, v := range names {
      fmt.Printf(tmpl, v)
    }

这会产生:

<td>john</td><td>jim</td>

我想获取返回的内容并创建HTML表格,或者至少能够将其传递给具有表格结构的另一个HTML模板。任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:3)

这是创建表格的一种方法:

var tmpl = `<tr><td>%s</td></tr>`
fmt.Printf("<table>")
names := []string{"john", "jim"}
for _, v := range names {
      fmt.Printf(tmpl, v)
}
fmt.Printf("</table>")

您还可以使用html / template包:

t := template.Must(template.New("").Parse(`<table>{{range .}}<tr><td>{{.}}</td></tr>{{end}}</table>`))
names := []string{"john", "jim"}
if err := t.Execute(os.Stdout, names); err != nil {
  log.Fatal(err)
}

我没有足够的果汁回答上述OP评论中的问题,所以我会在这里回答。

模板只需一个参数。如果要将多个值传递给模板,请创建一个结构来保存值:

 var data struct{ 
    A int
    Names []string
 }{
    1,
    []string{"john", "jim"},
 }
 if err := t.Execute(os.Stdout, &data); err != nil {
   log.Fatal(err)
 }

在模板中使用{{.A}}和{{.Name}}。