gpt4 book ai didi

templates - 从模板执行中获取值

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

我有一个 HTML 模板,我通过一个 map[string]string 变量执行它。该模板使用该变量创建我发送给客户的 HTML 输出。

除了生成 HTML 之外,我还想使用完全相同的模板生成一些返回到主程序的值,这样我就可以使用相同的文件在外部放置一些逻辑。

据我所知,无法修改我传递给 Execute 的变量(类似于 {{.output = "value"}})。

那么如何从模板执行中获取多个输出值呢?

最佳答案

您实际上不需要传递 funcmap,只需传递结构即可。

var tmpl = template.Must(template.New("test").Parse(`Before: {{.Data}}{{.Set "YY"}}, after: {{.Data}}`))

func main() {
c := &CustomData{"XX"}
tmpl.Execute(os.Stdout, c)
fmt.Println()
}

playground

你总是可以传递 FuncMap到模板,这是一个非常简单的例子:

const tmpl = `Before: {{.Data}}{{.Set "YY"}}, after: {{.Data}}`

type CustomData struct {
Data string
}

func (c *CustomData) Set(d string) string { // it has to return anything
c.Data = d
return ""
}

func main() {
c := &CustomData{"XX"}
funcMap := template.FuncMap{
"Set": c.Set,
}
t, _ := template.New("test").Funcs(funcMap).Parse(tmpl) // don't ignore errors in real code
t.Execute(os.Stdout, c)
fmt.Println()
}

playground

关于templates - 从模板执行中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359904/

24 4 0