在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!