golang text/template的用法: if, else, with
u013834131 · · 30745 次点击 · · 开始浏览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}}
支持的语法虽然少,但是完全够用!
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
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}}
支持的语法虽然少,但是完全够用!