gpt4 book ai didi

templates - 获取当前模板名称?

转载 作者:IT王子 更新时间:2023-10-29 02:00:20 24 4
gpt4 key购买 nike

是否可以在 Golang text/html/template 中访问当前模板的名称而不将其作为数据元素传递给模板?

谢谢!

最佳答案

我希望这就是你的意思(来自 http://golang.org/pkg/text/template/#Template.Name )

func (t *Template) Name() string

“名称返回模板的名称。”

如果您的意思是从模板中访问模板名称,我只能考虑向模板添加一个函数。FuncMap,或者按照您的建议将名称添加为数据元素。

第一个可能看起来像:

var t = template.Must(template.New("page.html").ParseFiles("page.html"))
t.Funcs(template.FuncMap{"name": fmt.Sprint(t.Name())})

但我无法在我弄乱它的短时间内让它工作。希望它能帮助您指明正确的方向。

从长远来看,将名称添加为数据元素可能会更容易。

编辑:如果有人想知道如何使用 template.FuncMap 来实现,基本上就是在创建模板后定义函数,然后将其添加到 FuncMap 中:

完整运行示例:

func main() {

const text = "{{.Thingtype}} {{templname}}\n"

type Thing struct {
Thingtype string
}

var thinglist = []*Thing{
&Thing{"Old"},
&Thing{"New"},
&Thing{"Red"},
&Thing{"Blue"},
}

t := template.New("things")

templateName := func() string { return t.Name() }

template.Must(t.Funcs(template.FuncMap{"templname": templateName}).Parse(text))

for _, p := range thinglist {
err := t.Execute(os.Stdout, p)
if err != nil {
fmt.Println("executing template:", err)
}
}
}

输出:

Old things
New things
Red things
Blue things

Playground 链接:http://play.golang.org/p/VAg5Gv5hCg

关于templates - 获取当前模板名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500577/

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