gpt4 book ai didi

templates - Go HTML/Template自动JSON编码

转载 作者:行者123 更新时间:2023-12-01 21:16:58 31 4
gpt4 key购买 nike

尽管我认为这可能是Go模板中的错误,并提出了一个问题:

https://github.com/golang/go/issues/38895

我想问一下Go的html/template的“按设计”行为,尤其是<script>标记的规则。见下文:

package main

import (
"fmt"
"html/template"
"os"
)

type User struct {
ID int `json:"id"`
Name string `json:"name"`
}

func main() {
u := User{1, "xrfang"}
//without <script>
t, _ := template.New("body").Parse("var u = {{.}}")
t.Execute(os.Stdout, u)
fmt.Println()
//with <script>
t, _ = template.New("body").Parse("<script>/*var u1 = {{.}}*/ var u2 = {{.}}</script>")
t.Execute(os.Stdout, u)
fmt.Println()
}

没有 <script>的模板生成的字符串与go的 %+v fmt字符串的输出相同。但是 <script>版本生成的JSON, 会自动删除 /* ... */之间的代码?

最佳答案

The template without generated string same as output of go's %+v fmt string. But the version generated JSON, and the code in-between /* ... */ is automatically removed??



是的。那是故意的。 html/template中的转义是特定于上下文的,因为它必须特定于上下文,以确保安全,如软件包文档中所述。

关于templates - Go HTML/Template自动JSON编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61628327/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com