Go模板(template)用法详解
Go模板是Go语言中用于生成文本输出的强大工具。它使用简单的语法和模板标记,允许我们在生成文本时进行逻辑控制和数据填充。下面是Go模板的详细用法攻略。
模板语法
Go模板使用双大括号{{}}
来标记模板的占位符和控制结构。以下是一些常用的模板语法:
-
变量插值:使用
{{.}}
来插入当前上下文中的变量值。例如,{{.Name}}
将插入Name
变量的值。 -
条件语句:使用
{{if .Condition}} ... {{end}}
来执行条件判断。例如,{{if .IsLoggedIn}} Welcome, {{.Username}}! {{end}}
将在用户登录时显示欢迎消息。 -
循环语句:使用
{{range .Items}} ... {{end}}
来进行循环迭代。例如,{{range .Products}} {{.Name}}: ${{.Price}} {{end}}
将遍历Products
列表并显示每个产品的名称和价格。 -
函数调用:使用
{{funcName .Arg1 .Arg2}}
来调用自定义函数。例如,{{formatDate .CreatedAt}}
将调用名为formatDate
的函数,并传递CreatedAt
变量作为参数。
示例说明
示例1:简单的变量插值
package main
import (
\t\"fmt\"
\t\"os\"
\t\"text/template\"
)
func main() {
\ttmpl, err := template.New(\"example\").Parse(\"Hello, {{.}}!\")
\tif err != nil {
\t\tfmt.Println(\"Error parsing template:\", err)
\t\tos.Exit(1)
\t}
\tdata := \"John\"
\terr = tmpl.Execute(os.Stdout, data)
\tif err != nil {
\t\tfmt.Println(\"Error executing template:\", err)
\t\tos.Exit(1)
\t}
}
输出结果:
Hello, John!
在这个示例中,我们定义了一个简单的模板,其中{{.}}
表示当前上下文中的变量。我们将data
变量设置为\"John\"
,并将其传递给模板的执行函数。模板将插入data
变量的值,并输出Hello, John!
。
示例2:条件语句和循环语句
package main
import (
\t\"fmt\"
\t\"os\"
\t\"text/template\"
)
type Product struct {
\tName string
\tPrice float64
}
func main() {
\ttmpl, err := template.New(\"example\").Parse(`
{{if .IsLoggedIn}}
\tWelcome, {{.Username}}!
{{else}}
\tPlease log in to continue.
{{end}}
Products:
{{range .Products}}
\t{{.Name}}: ${{.Price}}
{{end}}
`)
\tif err != nil {
\t\tfmt.Println(\"Error parsing template:\", err)
\t\tos.Exit(1)
\t}
\tdata := struct {
\t\tIsLoggedIn bool
\t\tUsername string
\t\tProducts []Product
\t}{
\t\tIsLoggedIn: true,
\t\tUsername: \"John\",
\t\tProducts: []Product{
\t\t\t{Name: \"Apple\", Price: 1.99},
\t\t\t{Name: \"Banana\", Price: 0.99},
\t\t\t{Name: \"Orange\", Price: 1.49},
\t\t},
\t}
\terr = tmpl.Execute(os.Stdout, data)
\tif err != nil {
\t\tfmt.Println(\"Error executing template:\", err)
\t\tos.Exit(1)
\t}
}
输出结果:
Welcome, John!
Products:
\tApple: $1.99
\tBanana: $0.99
\tOrange: $1.49
在这个示例中,我们定义了一个包含条件语句和循环语句的模板。根据IsLoggedIn
变量的值,模板将显示不同的欢迎消息。然后,它使用循环语句遍历Products
列表,并显示每个产品的名称和价格。
以上是Go模板的用法详解,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go模板template用法详解 - Python技术站