Go HTML/template 会莫名吃掉一些字符?(过滤 script 里的注释?)

代码是这样的:

//Go 1.14 amd64 win10
package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    r.Static("/assets", "./assets")
    r.LoadHTMLGlob("tmpl/*")
    r.GET("/test", func(ctx *gin.Context) {
        ctx.HTML(http.StatusOK, "test.tmpl", map[string]interface{}{})
    })
    if err := r.Run(); err != nil {
        panic(err)
    }
}
<!-- test.tmpl -->
<!doctype html>
<html lang="zh-cn">
<head>
    {{template "head"}}
</head>
<body>
{{template "foot"}}
</body>
</html>

<!-- base.tmpl -->
{{define "head"}}
    <meta charset="UTF-8">
    <!-- bulabula... -->
{{end}}
{{define "foot"}}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
  integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
  crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
  integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
  crossorigin="anonymous"></script>
     <script type="text/javascript" src="//js.users.51.la/00000.js"></script>

    <script>
    if ($("#Client-IP").length > 0) {
        $.ajax({
            url: "https://myip.ipip.net/",
            success: function (result) {}
        );
        $.ajax({
            url: "https://api.ip.sb/geoip", # 这里就是下面图片哪里被吃的地方
            success: function (result) {}
        });
    }
    </script>
{{end}}

输出是这样的:

https 后面的 //被截没了?
我之前见过这个标准库过滤<!---->的注释,这 js 里的注释也会处理掉?还处理错了位置?
我肯定是跟这个库有什么误会。。。

有没有相关的文档或者说明方便提供一下

讨论数量: 4

可以尝试转义一下斜杠

4年前 评论

@snowlyg 改为url: "https:\/\/api.ip.sb/geoip", 输出url: "https:\/\/api.ip.sb/geoip",也不是预期结果 :joy:

4年前 评论

file 用了你的代码测试了一下,很ok啊

4年前 评论

我也是,之前正常,近来突然这样了。 你解决了么?

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!