在Go語言的html/template
和text/template
包中,你可以使用{{.}}
或{{.FieldName}}
來訪問傳遞給模板的上下文中的變量。要設(shè)置變量,你可以在模板中使用{{define "name"}}
和{{template "name"}}
動作。這里有一個簡單的例子來說明如何在Go模板中設(shè)置和使用變量:
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)
}
// 執(zhí)行模板,并將結(jié)果輸出到標(biāo)準(zhǔn)輸出
err = tmpl.Execute(os.Stdout, nil)
if err != nil {
panic(err)
}
}
在這個例子中,我們定義了一個名為greeting
的模板,它接受一個參數(shù){{.}}
。然后,我們使用{{template "greeting" "John"}}
來執(zhí)行這個模板,并傳遞一個名為John
的變量。輸出將是:
Hello, John!
如果你想在模板中設(shè)置一個變量并在其他地方使用它,你可以使用{{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)
}
// 執(zhí)行模板,并將結(jié)果輸出到標(biāo)準(zhǔn)輸出
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}}
來執(zhí)行這兩個模板,并傳遞相應(yīng)的變量。輸出將是:
Hello, John!
Hello, my name is John!