在Go语言的html/template
和text/template
包中,你可以使用{{.}}
或{{.FieldName}}
来访问传递给模板的上下文中的变量。要设置变量,你可以在模板中使用{{define "name"}}
和{{template "name"}}
动作。这里有一个简单的例子来说明如何在Go模板中设置和使用变量:
package main
import (
"os"
"text/template"
)
func main() {
// 定义一个简单的模板字符串
tmplStr := ` {{define "greeting"}}Hello, {{.}}!{{end}} {{template "greeting" "John"}} `
// 解析模板字符串
tmpl, err := template.New("example").Parse(tmplStr)
if err != nil {
panic(err)
}
// 执行模板,并将结果输出到标准输出
err = tmpl.Execute(os.Stdout, nil)
if err != nil {
panic(err)
}
}
在这个例子中,我们定义了一个名为greeting
的模板,它接受一个参数{{.}}
。然后,我们使用{{template "greeting" "John"}}
来执行这个模板,并传递一个名为John
的变量。输出将是:
Hello, John!
如果你想在模板中设置一个变量并在其他地方使用它,你可以使用{{define "name"}}
和{{template "name" .}}
。这里有一个例子:
package main
import (
"os"
"text/template"
)
func main() {
// 定义一个简单的模板字符串
tmplStr := ` {{define "main"}}Hello, {{.}}!{{end}} {{define "greeting"}}Hello, my name is {{.}}!{{end}} {{template "main" "John"}} {{template "greeting" .Name}} `
// 解析模板字符串
tmpl, err := template.New("example").Parse(tmplStr)
if err != nil {
panic(err)
}
// 执行模板,并将结果输出到标准输出
err = tmpl.Execute(os.Stdout, map[string]interface{}{"Name": "John"})
if err != nil {
panic(err)
}
}
在这个例子中,我们定义了两个模板:main
和greeting
。main
模板使用{{.}}
来访问传递给它的变量,而greeting
模板使用{{.}}
来访问传递给它的.Name
变量。我们使用{{template "main" "John"}}
和{{template "greeting" .Name}}
来执行这两个模板,并传递相应的变量。输出将是:
Hello, John!
Hello, my name is John!