加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 18:52:18 所属栏目:大数据 来源:网络整理
导读:golang的text/template包在使用的时候还是有些不便,特别是涉及到逻辑判断的时候。经过测试,发现下面这种写法是正确的。 1.2.1的环境下没有问题! 相关资料:https://gowalker.org/text/template 。 eq是一个函数。 package mainimport "text/template"impo

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}}


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

??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读