我有一个字符串切片,我想遍历切片并创建一个带有值的简单 HTML 表。这是一些示例代码来说明:
var tmpl = `<td>%s</td>`
names := []string{"john", "jim"}
for _, v := range names {
fmt.Printf(tmpl, v)
}
Run Code Online (Sandbox Code Playgroud)
这产生:
var tmpl = `<td>%s</td>`
names := []string{"john", "jim"}
for _, v := range names {
fmt.Printf(tmpl, v)
}
Run Code Online (Sandbox Code Playgroud)
我想获取返回的内容并创建一个 HTML 表,或者至少能够将它传递给另一个具有表结构的 HTML 模板。任何想法如何做到这一点?
这是创建表的一种方法:
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>")
Run Code Online (Sandbox Code Playgroud)
您还可以使用 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)
}
Run Code Online (Sandbox Code Playgroud)
我没有足够的果汁来回答上面 OP 评论中的问题,所以我会在这里回答。
模板采用单个参数。如果要将多个值传递给模板,请创建一个结构来保存这些值:
var data struct{
A int
Names []string
}{
1,
[]string{"john", "jim"},
}
if err := t.Execute(os.Stdout, &data); err != nil {
log.Fatal(err)
}
Run Code Online (Sandbox Code Playgroud)
在模板中使用 {{.A}} 和 {{.Name}}。
| 归档时间: |
|
| 查看次数: |
6078 次 |
| 最近记录: |