项目需求:
- 将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字符串,没有获取到数据的为-