Go语言之模板语法

放肆的年华 提交于 2020-03-31 11:12:49
 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}}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!