1 package main 2 3 import ( 4 "html/template" 5 "math/rand" 6 "net/http" 7 "time" 8 ) 9 10 func process(w http.ResponseWriter, r *http.Request) { 11 t := template.Must(template.ParseFiles("tmpl.html")) //解析制定文件 生成模板對象 12 /* 13 rand.Intn () 函數是個偽隨機函數,不管運行多少次都只會返回同樣的隨機數,因為它默認的資源就是單一值, 14 所以必須調用 rand.Seed (), 並且傳入一個變化的值作為參數,如 time.Now().UnixNano() , 就是可以生成時刻變化的值. 15 */ 16 rand.Seed(time.Now().Unix()) 17 t.Execute(w, rand.Intn(10) > 5) //返回為bool值 18 19 //t.Execute(w,"hello world") //利用數據進行渲染 寫入w 20 //如果是模板集合則調用下面的方法對指定模板進行渲染 21 //t.ExecuteTemplate(w,"tmpl.html","helloworld") 22 } 23 24 //迭代 25 func tmplRange(w http.ResponseWriter, r *http.Request) { 26 t := template.Must(template.ParseFiles("tmplrange.html")) //解析制定文件 生成模板對象 27 //創建字符串數組 28 dayofWeek := []string{"mon", "tue", "wen", "thu", "fri", "sat", "sun"} 29 //寫入結果 30 t.Execute(w, dayofWeek) 31 } 32 33 //函數 34 func formatData(t time.Time) string { 35 layout := "2006-01-02" 36 return t.Format(layout) 37 } 38 39 func tmplfunc(w http.ResponseWriter, r *http.Request) { 40 //創建一個funcmap的映射 將fdata映射到函數formatData 41 funcMap := template.FuncMap{"fdata": formatData} 42 //創建一個模板 並將前邊的函數映射給模板 43 t := template.New("tmplfunc.html").Funcs(funcMap) 44 //解析模板 45 t, _ = t.ParseFiles("tmplfunc.html") 46 //返回結果 47 t.Execute(w, time.Now()) 48 } 49 50 //模板嵌套 51 func tmplNested(w http.ResponseWriter,r *http.Request){ 52 t,_:=template.ParseFiles("tmpllayout.html","tmplcontent.html") 53 t.Execute(w,"") 54 } 55 56 func main() { 57 http.HandleFunc("/process", process) 58 http.HandleFunc("/range", tmplRange) 59 http.HandleFunc("/func", tmplfunc) 60 http.HandleFunc("/nested",tmplNested) 61 http.ListenAndServe(":8080", nil) 62 63 }
//迭代
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>======================================</h1> 9 {{ range .}} 10 <li> {{ .}}</li> 11 {{ end}} 12 <h1>可以將一個參數傳遞給另一個參數 中間用|隔開</h1> 13 {{ 12.3456 | printf "%.2f"}} 14 </body> 15 </html>
//模板函數
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>func</title> 6 </head> 7 <body> 8 當前的時間為:{{ . | fdata}} 9 </body> 10 </html>
//模板嵌套
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>Hello world!</h1> 9 </body> 10 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 {{ template "tmplcontent.html"}} 9 {{ template "ol.html"}} 10 </body> 11 </html> 12 13 {{ define "ol.html"}} 14 <ol> 15 <li>吃飯</li> 16 <li>睡覺</li> 17 <li>打豆豆</li> 18 </ol> 19 {{ end}}
