golang 中 Template 的使用

Posted ythunder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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字符串,没有获取到数据的为-

以上是关于golang 中 Template 的使用的主要内容,如果未能解决你的问题,请参考以下文章

Golang Template 简明笔记

Golang template和junit xml report转html工具

用fiddler抓包实现大英上机刷分

4星|《钱的历史》:大英博物馆的钱币简史,彩图众多不适合在kindle上阅读

在多包中使用记录器/配置 Golang 生产的最佳实践

#yyds干货盘点#Golang 模板(text/template)