Go HTML template

文档
go doc text/template
$ go doc html/template

应用


func main() {
    // 定义模板显示格式
	const templ = `<p>A: {{.A}}</p><p>B: {{.B}}</p>`
    // 模板配置函数
	t := template.Must(template.New("escape").Parse(templ))
	var data struct {
		A string        // untrusted plain text
		B template.HTML // trusted HTML
	}
    // A是一个普通字符串,B是一个信任的template.HTML字符串类型。
	data.A = "<b>Hello!</b>"
	data.B = "<b>Hello!</b>"
    // 使用定义好的 模板 输出到 控制台
	if err := t.Execute(os.Stdout, data); err != nil {
		log.Fatal(err)
	}
}

/*
autoescape.html 结果

A:<b>Hello!</b>
B:Hello!

*/

语法

//取值
<p>{{.ArticleContent}}<span>{{.ArticleId}}</span></p>
// if 语句
{{if .condition}}
{{end}}

{{if .condition1}}
{{else if .contition2}}
{{end}}

// go 方法调用
{{funcname .arg1 .arg2}}
func add(left int, right int) int
{{add 1 2}}

// 逻辑判断
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 小于 (less than)
{{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}}
{{.field}}
{{end}}

模板嵌套
{{template "navbar"}}// 使用
{{define "navbar"}}// 定义
{{end}}
{{template "navbar" .}}// 获取父模板的变量

参考https://www.kancloud.cn/cserli/golang/531904