go語言html/template解析問題

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

最近使用go語言html/template包進行一些靜態化工作,發現template對於小於符號(左角括弧<)不能正確處理,反覆研究,沒有弄清楚怎麼回事,後來變通了一下,先對模板進行EscapeString編碼,格式化以後,再進行UnescapeString編碼,問題得到解決;
但還是沒弄清楚template為什麼對單獨的小於符號(左角括弧<)無法正確格式化,但發現如果左角括弧的右邊有一個或多個右角括弧(>),則能正確解析格式化,而template源碼包讀起來很費解,最終沒有弄明白,希望知道的同學能告知原因;
貼上我的解決方案,以供參考

package mytemplateimport ("bytes""html""html/template""os""strconv""time")type MyTemplate struct {LeftDelim  stringRightDelim stringEscape     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}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.