golang text/template的用法: if, else, with
2014-06-05 23:26
369 查看
golang的text/template 包在使用的时候还是有些不便,特别是涉及到逻辑判断的时候。经过测试,发现下面这种写法是正确的。 1.2.1的环境下没有问题!
相关资料:https://gowalker.org/text/template 。
eq是一个函数。
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}}
支持的语法虽然少,但是完全够用!
相关资料: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}}
支持的语法虽然少,但是完全够用!
相关文章推荐
- XSL基础: call-template,apply-templates,xsl:param,with-param,number format 用法
- oracle存储过程中的if...elseif...else用法
- if....else的基本用法
- shell if else case用法DEMO
- sql声明变量,及if -else语句、while语句的用法
- if...else的用法分析
- oracle存储过程中的if...elseif...else用法
- #ifdef,#else,#endif,#if用法详解(转)
- oracle 之if..else用法
- 每天学一点c++:#if #ifdef #ifndef #elif #else #endif的用法
- asp中VBScript下 if then else的用法注意
- Lua 的If Else用法
- JavaScript If else 语句用法 【每日一段代码43】
- if....else的基本用法
- #ifdef,#else,#endif,#if用法详解
- oracle存储过程中的if...elseif...else用法
- if……elseif……else……end if 的用法
- 看来需要继续研究结算中心账户客商触发器了|OK||更新if else用法|
- 这是oracle包实体里面的一个存储过程 oracle存储过程中的if...elseif...else用法
- 习题:if...else if...else的用法与注意事项