golang 中 Template 的使用

项目需求:
  • 将map中的内容部分填充到表格
  • 没有数据的填写符号” - ”

Go 的html/template包对HTML模板提供了丰富的模板语言。主要用于Web应用程序,在客户端的浏览中以结构化的方式显示数据。

go提供的模板填充接口,支持各种所以结构。
当渲染模板时,要访问模板中的数据,最前的变量是通过{{. }} 来访问。其中花括号中的点(.) 称为管道和root。

模板使用语法:

{{/* comment */}}  定义一个注释
{{.Title}}   在嵌套元素中显示Title对应的字段
{{.}}   显示根元素
{{if .Title}} {{else}} {{end}}  if else条件选择
{{range .Title}} {{.}} {{end}}  在Title上做循环显示每个元素

接口调用代码:

func getResultHtml(mapInfo map[string]string) string {
    buf := new(bytes.Buffer)
    //new 模板,命名temHtml
    temEmailHtml, _ := template.New("temHtml").Parse(templateEmail)
    //将mapInfo信息添加到模板,结果存入buf
    //buf默认为输入流对象,默认输出到终端
    temEmailHtml.Execute(buf, mapInfo)
    return buf.String()
}

var mapInfo = map[string]string
{"name":"云霆","sex":"男","math":"100"}

模板定义:

const templateEmail = `<html><body><table style='width:100%'><tr style='width:100%'><th style='width:60%;'> 服务 </th><th style='width:40%'> 资源使用占比 </th></tr>
                    <tr><td align='center'>姓名</td>
                    {{if .name}}<td align='center'>{{.name}}</td><tr> {{else}} <td align='center'> - </td><tr> {{end}}
                    <tr><td align='center'>性别</td>
                    {{if .sex}}<td align='center'>{{.sex}}%</td><tr> {{else}} <td align='center'> - </td><tr> {{end}}
                    <tr><td align='center'>颜色</td>
                    {{if .color}} <td align='center'>{{.color}}%</td><tr> {{else}} <td align='center'> - </td><tr> {{end}}
                    <tr><td align='center'>高数</td>
                    {{if .math}} <td align='center'>{{.math}}%</td><tr> {{else}} <td align='center'> - /td><tr> {{end}}
                    <tr><td align='center'>大英</td>
                    {{if .english}} <td align='center'>{{.english}}%</td><tr> {{else}} <td align='center'> - </td><tr> {{end}}
                    <tr><td align='center'>语文</td>
                    {{if .chinese}} <td align='center'>{{.chinese}}%</td><tr> {{else}} <td align='center'> - </td><tr> {{end}}
    </table></body></html>`

结果返回表格形式的html字符串,没有获取到数据的为-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值