您的位置:首页 > 编程语言 > Go语言

golang text/template的用法: if, else, with

2014-06-05 23:26 369 查看
golang的text/template 包在使用的时候还是有些不便,特别是涉及到逻辑判断的时候。经过测试,发现下面这种写法是正确的。 1.2.1的环境下没有问题!

相关资料:https://gowalker.org/text/template  。

eq是一个函数。

package main

import "text/template"
import "os"

func main() {

type Inventory struct {
Material string
Count    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}}

支持的语法虽然少,但是完全够用!


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: