Go:使用html / template在新行上打印切片中的每个元素

时间:2014-08-15 17:13:20

标签: go

如何在新线上打印“apple”,“orange”和“pear”?

GO:

const titlepage = `
<html>
<h1>{{ .Title}}</h1>
<h1>{{ range $i := .Body}}{{$i}}{{end}}</h1>
</html>
`
type tp struct {
    Title string
    Body []string
}

func Read() ([]string) {
    a := []string{"apple", "orange", "pear"}
    return a
}

func main() {
    as := tp{Title: "Hello", Body: Read()}
    t := template.Must(template.New("Tele").Parse(titlepage))
    t.Execute(os.Stdout, as)
}

当前输出:

<html>
<h1>Hello</h1>
<h1>appleorangepear</h1>
</html>

Go Playground上的代码:http://play.golang.org/p/yhyfcq--MM

1 个答案:

答案 0 :(得分:3)

模板中的换行符将被复制到结果中。如果您想在{{$i}}之后添加换行符,则只需添加一行。

修改:如果您希望在网络浏览器中显示换行符,则需要使用<br/>之类的HTML元素,或将您的项目放在<li>(列表)中。我在代码中添加了<br/>

http://play.golang.org/p/1G0CIfhb8a

const titlepage = `
<html>
<h1>{{ .Title}}</h1>
<h1>{{ range $i := .Body}}{{$i}}<br/>
{{end}}</h1>
</html>
`
type tp struct {
    Title string
    Body []string
}

func Read() ([]string) {
    a := []string{"apple", "orange", "pear"}
    return a
}

func main() {
    as := tp{Title: "Hello", Body: Read()}
    t := template.Must(template.New("Tele").Parse(titlepage))
    t.Execute(os.Stdout, as)
}