一 ?什么是模板?
你一定聽說過一種叫做MVC的設計模式,Model處理數據,View展現結果,Controller控制用戶的請求,至于View層的處理,在很多動態語言里面都是通過在靜態HTML中插入動態語言生成的數據,例如JSP中通過插入<%=....=%>,PHP中通過插入來實現的。
通過下面這個圖可以說明模板的機制
Web應用反饋給客戶端的信息中的大部分內容是靜態的,不變的,而另外少部分是根據用戶的請求來動態生成的,例如要顯示用戶的訪問記錄列表。用戶之間只有記錄數據是不同的,而列表的樣式則是固定的,此時采用模板可以復用很多靜態代碼
二 Template 使用
package main
import(
"html/template"
"os"
)
type Person struct{
UserName string//必須大寫,否則不能顯示
Emails? []string
Friends? []*Friend
}
func main() {
t := template.New("fieldname example")
t,_ = t.Parse("hello {{.UserName}}!")
p := Person{UserName:"Astaxie"}
t.Execute(os.Stdout,p)
//foo()
}
Go語言的模板通過{{}}來包含需要在渲染時被替換的字段,{{.}}表示當前的對象,這和Java或者C++中的this類似,如果要訪問當前對象的字段通過{{.FieldName}},但是需要注意一點:這個字段必須是導出的(字段首字母必須是大寫的),否則在渲染的時候就會報錯
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/07.4.md