這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang的text/template 包在使用的時候還是有些不便,特別是涉及到邏輯判斷的時候。經過測試,發現下面這種寫法是正確的。 1.2.1的環境下沒有問題!
相關資料:https://gowalker.org/text/template 。
eq是一個函數。
package mainimport "text/template"import "os"func main() {type Inventory struct {Material stringCount int}sweaters := Inventory{"axe", 0}html := `"test").Parse("{{.Count}} items are made of {{.Material}}"{{$a := .Count}}{{$b := 17}}{{$c := 18}} {{if eq .Count $b}}oo{{else}}xx{{end}}`tmpl, err := template.New("test").Parse(html)if err != nil {panic(err)}err = tmpl.Execute(os.Stdout, sweaters)if err != nil {panic(err)}}
{{len .Statistics | print}}{{$le:= len .Statistics}}{{if eq $le 0}} is 0 {{else}} not 0 {{end}}
if/else 與or, eq函數的用法
{{else if or (eq $e.Status -2) (eq $e.Status -3)}}
{{with and ($et := .Extension) ($ch := .Changelog) }}
{{range $e := $ch}}
...
{{$et.Name}} {{$e.Version}}
{{end}}
{{end}}
補充:
There is a variable, $, that you can use to solve your problem. From the text/template docs: "When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot." In your case:
{{with ($ch := .Changelog) }}
{{range $e := $ch}}
<!--begin ch-->
<span>
{{$e.CreateTime}} html1
</span>
{{with ($u:= $.User)}}
<a href="/xxx?cid={{$e.Cid}}">html2
</a>
{{end}}
<!--end ch-->
{{end}}
{{end}}
支援的文法雖然少,但是完全夠用!