go语言 解析html,go语言html/template解析问题

最近使用go语言html/template包进行一些静态化工作,发现template对于小于号(左尖括号

但还是没弄清楚template为什么对单独的小于号(左尖括号),则能正确解析格式化,而template源码包读起来很费解,最终没有弄明白,希望知道的同学能告知原因;

贴上我的解决方案,以供参考

package mytemplate

import (

"bytes"

"html"

"html/template"

"os"

"strconv"

"time"

)

type MyTemplate struct {

LeftDelim string

RightDelim string

Escape bool

}

func NewMwTemplate(left, right string, escape bool) *MwTemplate {

return &MwTemplate{

left, right, escape,

}

}

//将模板字符串格式化

//@param tplStr 模板字符串

//@param tplObj 模板数据

func (this *MyTemplate) TplToString(tplStr string, tplObj interface{}) (result string, err error) {

//如果需要编码

if this.Escape {

tplStr = html.EscapeString(tplStr)

}

t := template.New(strconv.FormatInt(time.Now().Unix(), 10))

if err != nil {

return

}

//覆盖模板左右分隔符

if this.LeftDelim != "" && this.RightDelim != "" {

t.Delims(this.LeftDelim, this.RightDelim)

}

t, err = t.Parse(tplStr)

if err != nil {

return

}

b := new(bytes.Buffer)

err = t.Execute(b, tplObj)

if err != nil {

return

}

result = string(b.String())

if this.Escape {

result = html.UnescapeString(result)

}

return

}

//TplToFile 将模板字符串格式化以后,写入文件

//@param tplStr 模板字符串

//@param tplPath 保存的文件

//@param tplObj 模板数据

func (this *MyTemplate) TplToFile(tplStr, tplPath string, tplObj interface{}) (err error) {

result, err := this.TplToString(tplStr, tplObj)

if err != nil {

return

}

fout, err := os.Create(tplPath)

if err != nil {

return

}

defer fout.Close()

_, err = fout.WriteString(result)

return

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值