html/template包负责解析html文件中的模版块
html中的模版块儿通常由{{}}包含起来
笔者最近在收集模版语法
{{/注释/}}
{{.[字段名]}}
{{.[方法名] <参数1> <参数2> …}}
{{[函数映射的名字]}}
{{$变量名}}:用于输出在模版中定义的变量名
{{if condition}}…{{end}}
{{if condition}}…{{else}}…{{end}}
{{if condition}}…{{else if condition}}…{{end}}
逻辑判断
not 非
{{if not .condition}} {{end}}
* and 与
{{if and .condition1 .condition2}} {{end}}
* or 或
{{if or .condition1 .condition2}} {{end}}
* eq 等于
{{if eq .var1 .var2}} {{end}}
* ne 不等于
{{if ne .var1 .var2}} {{end}}
* lt 小于
{{if lt .var1 .var2}} {{end}}
* le 小于等于
{{if le .var1 .var2}} {{end}}
* gt 大于
{{if gt .var1 .var2}} {{end}}
* ge 大于等于
{{if ge .var1 .var2}} {{end}}
{{range i, v := .slice}}…..{{end}}
{{range .slice}}……{{end}}
{{templates “template name”}}
{{define “template name”}}….{{end}}
{{templates “template name” .}}
在模版中使用函数需要从go程序中注入才能使用,在搜索引擎上挣扎了很久才解决这个问题.因为ParseFiles要在Funcs之后,所以创建模版的时候使用templates.New,模版名字要写成模版文件名全名,包括后缀名
package main import ( "net/http" "fmt" "html/template" "strconv" "log" ) type Tmpldata struct{ Title string Msg string Id string } func (t Tmpldata)GetTitle(x int) string{ return t.Title + strconv.Itoa(x) } func SetTitle(title string,x int)string{ return title + strconv.Itoa(x) } func index(w http.ResponseWriter,r *http.Request){ files := []string{"templates/index.html"} funcs := template.FuncMap{"setTitle":SetTitle} tmp := template.Must(template.New("index.html").Funcs(funcs).ParseFiles(files...)) var data = Tmpldata{Title:"吴文韬",Msg:"邱爽我爱你"} err := tmp.Execute(w,data) if err!=nil { log.Println(err) } //log.Printf("Excute ok") } func main(){ http.HandleFunc("/",index) err := http.ListenAndServe("0.0.0.0:10010",nil) if err!=nil{ fmt.Print(err); } //fmt.Println("xxx") } <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> {{setTitle .Title 1}} </title> </head> <body> <span>{{.Msg}}</span> </body> </html>
GO语言中的html template包浅析介绍到这里,更多go学习请参考编程字典go教程 和问答部分,谢谢大家对编程字典的支持。
原文链接:https://blog.csdn.net/lkysyzxz/article/details/79149427