使用 gin + go-template 的相同代码但结果不同

基本信息


Go 版本:go1.4.2 darwin/amd64

操作系统:Mac OS X 10.10.5

我正在开发一个基于go和gin编写的小型 Web 项目。这是我的 golang 代码。运行后,go run test.go我们有一个 Web 服务器,它正在侦听 8089。


Golang test.go


package main


import "github.com/gin-gonic/gin"

import "net/http"


func main() {

    router := gin.Default()

    router.LoadHTMLGlob("templates/*")

    router.GET("/index", func(c *gin.Context) {

        c.HTML(http.StatusOK, "index.html", gin.H{

            "scheme": "http",

            "domain": "meican.loc",

        })

    })

    router.Run(":8089") // listen and serve on 0.0.0.0:8089

}

后端生成的 html 代码应包含前端 javascript 引擎(假设为 Angular.js)使用的模板。


所以模板代码在script标签中,就像这样:


模板/index.html 的一部分


<script type="text/template" charset="utf-8">

  <div data="{{.scheme}}://{{.domain}}/qr"></div>

  <div data="{{.scheme}}://{{.domain}}/qr"></div> <!-- problem here -->

</script>

当{{.domain}}第二次使用时,我得到了不同的结果。我刷新了浏览器并查看了源代码。然后我得到了这个:


浏览器源码结果


<script type="text/template" charset="utf-8">

  <div data="http://meican.loc/qr"></div>

  <div data="http://"meican.loc"/qr"></div>  <!-- problems here -->

</script>

第二个div有 2 个额外的双引号。


为什么会发生这种情况?以及如何解决这个问题?



慕村9548890
浏览 158回答 1
1回答

胡子哥哥

这是 Go 中的一个错误,已计划在2016 年 3 月的1.7 中修复(也在1.6 中部分解决)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go