dccmmtop / notebook

个人博客记录
0 stars 0 forks source link

Go模板之动作 #29

Open dccmmtop opened 2 years ago

dccmmtop commented 2 years ago

Go的模板动作就是嵌入模板的命令

条件动作

{{ if arg }}
some content
{{ else }}
other content
{{ end }}

迭代动作

迭代动作可以对数组,切片,映射,或者通道进行迭代, 在迭代循环内部, 点(.) 会被设置正在当前迭代内容

设置动作

设置动作允许为指定的范围的点(.) 设置指定的值。减少重复代码

包含动作

包含动作(include action)允许用户在一个模板里面包含另一个模板,从而构建出嵌套的模板。 包含动作的格式为{{ template "name" arg }},其中name参数为被包含模板的名字。没有特别指定名称时,就是文件名, arg 是参数名

参数、变量和管道

示例:

package main

import (
    "fmt"
    "html/template"
    "net/http"
    "time"
)

func main(){
    server := http.Server{
        Addr: "127.0.0.1:8080",
    }
    http.HandleFunc("/testFuncMap", testFuncMap)
    server.ListenAndServe()
}

func testFuncMap(w http.ResponseWriter, re *http.Request) {
    funcMap := template.FuncMap{
        "fdate": formatDate,
    }
    t  := template.New("testFuncMap.tmpl").Funcs(funcMap)
    // 前后模板的名字必须相同
    t, err := t.ParseFiles("./testFuncMap.tmpl")
   if err != nil {
       fmt.Println(err)
       return
   }
   err = t.Execute(w,time.Now())
    if err != nil {
        fmt.Println(err)
        return
    }

}
func formatDate(t time.Time) string{
    layout := "2006-01-02"
    return t.Format(layout)
}