Golang 页面模板之模板中如何插入数据,输出嵌套字段内容?以及神奇的减号“-”,如何去掉Go Template生成的标签换行符


/root/code/go/src/contoso.org/hello/index.html

<!DOCTYPE html>
<html>
<head>
    <title>模板中如何插入数据?</title>  
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    <meta name="keywords" content="关键词1,关键词2">
    <meta name="description" content="">
    <style>
        span {display:block;width:100px;float:left;}
    </style>
</head>
<body>
    <div>
        <h3>输出嵌套字段内容</h3>
        <p><b>{{.UserName}}</b><p>
        <ul>
            {{range .Emails}}
            <li>{{.}}</li>
            {{end}}
        </ul>    
        <ul>        
            {{with .Friends}}
            {{range .}}
            <li><span>{{.Fname}}</span><span>{{.Age}}</span><span>{{.Mobile}}</span></li>
            {{end}}
            {{end}}
        </ul>
    </div>
</body>
</html>

/root/code/go/src/contoso.org/hello/main.go

package main

import (
    "html/template"
    "net/http"
)

type Friend struct {
    Fname  string
    Age    int
    Mobile string
}

type Person struct {
    UserName string
    Emails   []string
    Friends  []*Friend
}

func main() {
    http.HandleFunc("/", load)
    http.ListenAndServe(":9090", nil)
}

func load(w http.ResponseWriter, r *http.Request) {
    tim := Friend{Fname: "Tim", Age: 25, Mobile: "13620052000"}
    jack := Friend{Fname: "Jack", Age: 28, Mobile: "13520172000"}
    tom := Friend{Fname: "Tom", Age: 19, Mobile: "13512345000"}
    p := Person{UserName: "Jason",
        Emails:  []string{"jason@163.com", "jason@hotmail.com"},
        Friends: []*Friend{&tim, &jack, &tom}}
    t, _ := template.ParseFiles("index.html")
    t.Execute(w, p)
}


模板格式处理如下,注意这个神奇的“-”符号,它的位置可以写在花括号内部的前后:

<!DOCTYPE html>
<html>
<head>
    <title>模板中如何插入数据?</title>  
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    <meta name="keywords" content="关键词1,关键词2">
    <meta name="description" content="">
    <style>
        span {display:block;width:100px;float:left;}
    </style>
</head>
<body>
    <div>
        <h3>输出嵌套字段内容</h3>
        <p><b>{{.UserName}}</b><p>
        <ul>
            {{range .Emails -}}
            <li>{{.}}</li>
            {{- end}}
        </ul>    
        <ul>        
            {{with .Friends -}}
            {{range . -}}

            <li><span>{{.Fname}}</span><span>{{.Age}}</span><span>{{.Mobile}}</span></li>
            {{- end}}
         {{- end}}

        </ul>
    </div>
</body>
</html>

神奇的减号“-”,去掉Go Template生成的标签换行符:

<!DOCTYPE html>
<html>
<head>
    <title>模板中如何插入数据?</title>  
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    <meta name="keywords" content="关键词1,关键词2">
    <meta name="description" content="">
    <style>
        span {display:block;width:100px;float:left;}
    </style>
</head>
<body>
    <div>
        <h3>输出嵌套字段内容</h3>
        <p><b>{{.UserName}}</b><p>
        <ul>
            {{- range .Emails}}
            <li>{{.}}</li>
            {{- end}}
        </ul>    
        <ul>        
            {{- with .Friends}}
            {{- range .}}
            <li><span>{{.Fname}}</span><span>{{.Age}}</span><span>{{.Mobile}}</span></li>
            {{- end}}
            {{- end}}

        </ul>
    </div>
</body>

</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值