{{.Body}}
` t, err := template.New("test").Parse(html) if err != nil { log.Fatal("template parse failed:", err) } ``` 上述代码通过New方法创建了一个名为test的模板对象t,并通过Parse方法将html字符串解析到该模板对象中。其中,{{.Title}}、{{.Header}}和{{.Body}}是模板中的变量,它们会在渲染模板时被动态地填充。 2、数据的填充 数据的填充一般有两种方式:通过结构体和通过map。下面,我们将介绍这两种方式的具体做法。 (1)通过结构体填充数据 下面的示例演示了如何通过结构体填充数据: ``` type Page struct { Title string Header string Body string } page := Page{ Title: "测试页面", Header: "欢迎访问我的测试页面", Body: "此处是测试页面内容", } err = t.Execute(os.Stdout, page) if err != nil { log.Fatal("execute failed:", err) } ``` 上述代码创建了一个名为Page的结构体,并用其中的三个字段分别填充了模板中相应的变量。最后,通过t.Execute方法将填充后的模板输出到标准输出上。 (2)通过map填充数据 下面的示例演示了如何通过map填充数据: ``` data := map[string]string{ "Title": "测试页面", "Header": "欢迎访问我的测试页面", "Body": "此处是测试页面内容", } err = t.Execute(os.Stdout, data) if err != nil { log.Fatal("execute failed:", err) } ``` 上述代码创建了一个名为data的map,并用其中的三个键值对分别填充了模板中相应的变量。最后,通过t.Execute方法将填充后的模板输出到标准输出上。 3、控制模板的执行流程 除了变量的填充外,我们还可以通过if、for等语句来控制模板的执行流程。下面,我们将展示如何使用if和range语句。 (1)if语句 下面是if语句的示例代码: ``` html := `{{.Body}}
` t, err := template.New("test").Parse(html) if err != nil { log.Fatal("template parse failed:", err) } type Page struct { Title string ShowHeader bool Header string Body string } page := Page{ Title: "测试页面", ShowHeader: true, Header: "欢迎访问我的测试页面", Body: "此处是测试页面内容", } err = t.Execute(os.Stdout, page) if err != nil { log.Fatal("execute failed:", err) } ``` 上述代码在模板中嵌入了if语句,只有在ShowHeader为true时才会渲染Header内容。可以通过修改ShowHeader的值来控制Header的显示与隐藏。 (2)range语句 下面是range语句的示例代码: ``` html := `-
{{range .List}}
- {{.}} {{end}}