golang text/templateの使い方:if,else,with
1552 ワード
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}} {{$e.CreateTime}} html1 {{with ($u:= $.User)}} html2 {{end}} {{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}} {{$e.CreateTime}} html1 {{with ($u:= $.User)}} html2 {{end}} {{end}} {{end}}
サポートされている文法は少ないですが、十分です!